@alacard-project/shared 1.1.2 → 1.1.4

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.
Files changed (64) hide show
  1. package/dist/constants/microservices.constants.d.ts +4 -0
  2. package/dist/constants/microservices.constants.js +4 -0
  3. package/dist/constants/microservices.constants.js.map +1 -1
  4. package/dist/contracts/card.contract.d.ts +98 -0
  5. package/dist/contracts/card.contract.js +3 -0
  6. package/dist/contracts/card.contract.js.map +1 -0
  7. package/dist/contracts/index.d.ts +3 -1
  8. package/dist/contracts/index.js +3 -0
  9. package/dist/contracts/index.js.map +1 -1
  10. package/dist/contracts/transaction.contract.d.ts +63 -0
  11. package/dist/contracts/transaction.contract.js +3 -0
  12. package/dist/contracts/transaction.contract.js.map +1 -0
  13. package/dist/dto/auth.dto.d.ts +3 -1
  14. package/dist/dto/auth.dto.js +11 -0
  15. package/dist/dto/auth.dto.js.map +1 -1
  16. package/dist/filters/global-exception.filter.d.ts +12 -0
  17. package/dist/filters/global-exception.filter.js +152 -0
  18. package/dist/filters/global-exception.filter.js.map +1 -0
  19. package/dist/filters/index.d.ts +1 -0
  20. package/dist/filters/index.js +18 -0
  21. package/dist/filters/index.js.map +1 -0
  22. package/dist/index.d.ts +9 -0
  23. package/dist/index.js +9 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/middleware/index.d.ts +2 -0
  26. package/dist/middleware/index.js +19 -0
  27. package/dist/middleware/index.js.map +1 -0
  28. package/dist/middleware/prisma-logging.middleware.d.ts +3 -0
  29. package/dist/middleware/prisma-logging.middleware.js +52 -0
  30. package/dist/middleware/prisma-logging.middleware.js.map +1 -0
  31. package/dist/middleware/tracing.middleware.d.ts +8 -0
  32. package/dist/middleware/tracing.middleware.js +33 -0
  33. package/dist/middleware/tracing.middleware.js.map +1 -0
  34. package/dist/resilience/circuit-breaker.service.d.ts +1 -1
  35. package/dist/resilience/circuit-breaker.service.js +2 -2
  36. package/dist/resilience/circuit-breaker.service.js.map +1 -1
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/dist/types/logger.interface.d.ts +6 -0
  39. package/dist/types/logger.interface.js +3 -0
  40. package/dist/types/logger.interface.js.map +1 -0
  41. package/dist/utils/app-logger.d.ts +11 -0
  42. package/dist/utils/app-logger.js +65 -0
  43. package/dist/utils/app-logger.js.map +1 -0
  44. package/dist/utils/app.utils.d.ts +4 -0
  45. package/dist/utils/app.utils.js +8 -1
  46. package/dist/utils/app.utils.js.map +1 -1
  47. package/dist/utils/grpc-tracing-server.interceptor.d.ts +8 -0
  48. package/dist/utils/grpc-tracing-server.interceptor.js +48 -0
  49. package/dist/utils/grpc-tracing-server.interceptor.js.map +1 -0
  50. package/dist/utils/grpc-tracing.interceptor.d.ts +8 -0
  51. package/dist/utils/grpc-tracing.interceptor.js +35 -0
  52. package/dist/utils/grpc-tracing.interceptor.js.map +1 -0
  53. package/dist/utils/http-tracing.interceptor.d.ts +8 -0
  54. package/dist/utils/http-tracing.interceptor.js +35 -0
  55. package/dist/utils/http-tracing.interceptor.js.map +1 -0
  56. package/dist/utils/proto-path.js +1 -1
  57. package/dist/utils/proto-path.js.map +1 -1
  58. package/dist/utils/tracing.module.d.ts +2 -0
  59. package/dist/utils/tracing.module.js +22 -0
  60. package/dist/utils/tracing.module.js.map +1 -0
  61. package/dist/utils/tracing.service.d.ts +10 -0
  62. package/dist/utils/tracing.service.js +43 -0
  63. package/dist/utils/tracing.service.js.map +1 -0
  64. package/package.json +49 -45
@@ -59,4 +59,8 @@ export declare const MICROSERVICES: {
59
59
  readonly SERVICE_NAME: "TokenService";
60
60
  readonly PACKAGE: "token";
61
61
  };
62
+ readonly WALLET: {
63
+ readonly SERVICE_NAME: "WalletService";
64
+ readonly PACKAGE: "wallet";
65
+ };
62
66
  };
@@ -62,5 +62,9 @@ exports.MICROSERVICES = {
62
62
  SERVICE_NAME: 'TokenService',
63
63
  PACKAGE: 'token',
64
64
  },
65
+ WALLET: {
66
+ SERVICE_NAME: 'WalletService',
67
+ PACKAGE: 'wallet',
68
+ },
65
69
  };
66
70
  //# sourceMappingURL=microservices.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"microservices.constants.js","sourceRoot":"","sources":["../../src/constants/microservices.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IACzB,MAAM,EAAE;QACJ,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,QAAQ;KACpB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACH,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,OAAO;KACnB;IACD,IAAI,EAAE;QACF,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,MAAM;KAClB;IACD,IAAI,EAAE;QACF,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,MAAM;KAClB;IACD,MAAM,EAAE;QACJ,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,QAAQ;KACpB;IACD,IAAI,EAAE;QACF,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,MAAM;KAClB;IACD,WAAW,EAAE;QACT,YAAY,EAAE,oBAAoB;QAClC,OAAO,EAAE,aAAa;KACzB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,YAAY,EAAE;QACV,YAAY,EAAE,qBAAqB;QACnC,OAAO,EAAE,cAAc;KAC1B;IACD,UAAU,EAAE;QACR,YAAY,EAAE,mBAAmB;QACjC,OAAO,EAAE,YAAY;KACxB;IACD,QAAQ,EAAE;QACN,YAAY,EAAE,iBAAiB;QAC/B,OAAO,EAAE,UAAU;KACtB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACH,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,OAAO;KACnB;CACK,CAAC"}
1
+ {"version":3,"file":"microservices.constants.js","sourceRoot":"","sources":["../../src/constants/microservices.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IACzB,MAAM,EAAE;QACJ,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,QAAQ;KACpB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACH,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,OAAO;KACnB;IACD,IAAI,EAAE;QACF,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,MAAM;KAClB;IACD,IAAI,EAAE;QACF,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,MAAM;KAClB;IACD,MAAM,EAAE;QACJ,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,QAAQ;KACpB;IACD,IAAI,EAAE;QACF,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,MAAM;KAClB;IACD,WAAW,EAAE;QACT,YAAY,EAAE,oBAAoB;QAClC,OAAO,EAAE,aAAa;KACzB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,YAAY,EAAE;QACV,YAAY,EAAE,qBAAqB;QACnC,OAAO,EAAE,cAAc;KAC1B;IACD,UAAU,EAAE;QACR,YAAY,EAAE,mBAAmB;QACjC,OAAO,EAAE,YAAY;KACxB;IACD,QAAQ,EAAE;QACN,YAAY,EAAE,iBAAiB;QAC/B,OAAO,EAAE,UAAU;KACtB;IACD,OAAO,EAAE;QACL,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACH,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,OAAO;KACnB;IACD,MAAM,EAAE;QACJ,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,QAAQ;KACpB;CACK,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { Observable } from 'rxjs';
2
+ import { CreateCardDto, UpdateCardDto } from '../dto/card.dto';
3
+ export interface Card {
4
+ id: string;
5
+ cardNumber: string;
6
+ cardType: string;
7
+ cardStatus: string;
8
+ clientId: string;
9
+ accountId: string;
10
+ balance: number;
11
+ issuedAt: string;
12
+ expiresAt: string;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ }
16
+ export interface FindCardsDto {
17
+ skip?: number;
18
+ take?: number;
19
+ page?: number;
20
+ limit?: number;
21
+ clientId?: string;
22
+ status?: string;
23
+ }
24
+ export interface FindByClientDto {
25
+ clientId: string;
26
+ clientNumber?: string;
27
+ }
28
+ export interface CardsResponse {
29
+ cards: Card[];
30
+ total: number;
31
+ }
32
+ export interface BalanceResponse {
33
+ cardId: string;
34
+ balance: number;
35
+ currency: string;
36
+ }
37
+ export interface SyncHistoryItem {
38
+ id: string;
39
+ cardId: string;
40
+ terminalId: string;
41
+ amount: number;
42
+ syncDate: string;
43
+ }
44
+ export interface SyncHistoryResponse {
45
+ items: SyncHistoryItem[];
46
+ total: number;
47
+ }
48
+ export interface CardStatsResponse {
49
+ totalCards: number;
50
+ activeCards: number;
51
+ blockedCards: number;
52
+ totalBalance: number;
53
+ }
54
+ export interface UpdatePhysicalBalanceDto {
55
+ id: string;
56
+ amountAdded: number;
57
+ terminalId?: string;
58
+ allocationId?: string;
59
+ rawData?: any;
60
+ }
61
+ export interface UpdateVirtualBalanceDto {
62
+ id: string;
63
+ amount: number;
64
+ reason?: string;
65
+ }
66
+ export interface UpdateBalanceModeDto {
67
+ id: string;
68
+ mode: 'OFFLINE' | 'ONLINE' | 'HYBRID';
69
+ }
70
+ export interface GetSyncHistoryDto {
71
+ id: string;
72
+ page?: number;
73
+ limit?: number;
74
+ }
75
+ export interface ICardService {
76
+ create(data: CreateCardDto): Observable<Card>;
77
+ findAll(data: FindCardsDto): Observable<CardsResponse>;
78
+ findByClient(data: FindByClientDto): Observable<CardsResponse>;
79
+ findOne(data: {
80
+ id: string;
81
+ }): Observable<Card>;
82
+ getStats(data: {}): Observable<CardStatsResponse>;
83
+ getSyncHistory(data: GetSyncHistoryDto): Observable<SyncHistoryResponse>;
84
+ getEffectiveBalance(data: {
85
+ id: string;
86
+ }): Observable<BalanceResponse>;
87
+ update(data: {
88
+ id: string;
89
+ } & UpdateCardDto): Observable<Card>;
90
+ updatePhysicalBalance(data: UpdatePhysicalBalanceDto): Observable<Card>;
91
+ updateVirtualBalance(data: UpdateVirtualBalanceDto): Observable<Card>;
92
+ updateBalanceMode(data: UpdateBalanceModeDto): Observable<Card>;
93
+ remove(data: {
94
+ id: string;
95
+ }): Observable<{
96
+ success: boolean;
97
+ }>;
98
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=card.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.contract.js","sourceRoot":"","sources":["../../src/contracts/card.contract.ts"],"names":[],"mappings":""}
@@ -1,4 +1,6 @@
1
1
  export * from './config.contract';
2
2
  export * from './logging.contract';
3
3
  export * from './auth.contract';
4
- export type { GenerateTokensRequest, TokensResponse, ITokenService, ValidateTokenRequest, ValidateTokenResponse, RefreshTokensRequest, RevokeTokenRequest, RevokeTokenResponse } from './token.contract';
4
+ export * from './token.contract';
5
+ export * from './card.contract';
6
+ export * from './transaction.contract';
@@ -17,4 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./config.contract"), exports);
18
18
  __exportStar(require("./logging.contract"), exports);
19
19
  __exportStar(require("./auth.contract"), exports);
20
+ __exportStar(require("./token.contract"), exports);
21
+ __exportStar(require("./card.contract"), exports);
22
+ __exportStar(require("./transaction.contract"), exports);
20
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,kDAAgC;AAChC,mDAAiC;AACjC,kDAAgC;AAChC,yDAAuC"}
@@ -0,0 +1,63 @@
1
+ import { Observable } from 'rxjs';
2
+ import { CreateTransactionDto, UpdateTransactionDto } from '../dto/transaction.dto';
3
+ export interface Transaction {
4
+ id: string;
5
+ externalId?: string;
6
+ cardId: string;
7
+ amount: number;
8
+ currency: string;
9
+ type: string;
10
+ status: string;
11
+ description?: string;
12
+ transactionDate: string;
13
+ createdAt: string;
14
+ metadata?: any;
15
+ }
16
+ export interface FindTransactionsDto {
17
+ cardId?: string;
18
+ skip?: number;
19
+ take?: number;
20
+ page?: number;
21
+ limit?: number;
22
+ year?: number;
23
+ month?: number;
24
+ }
25
+ export interface SearchTransactionsDto {
26
+ cardIds: string[];
27
+ clientId?: string;
28
+ skip?: number;
29
+ take?: number;
30
+ orderBy?: string;
31
+ }
32
+ export interface TransactionsResponse {
33
+ transactions: Transaction[];
34
+ total: number;
35
+ }
36
+ export interface TransactionsResult {
37
+ items: Transaction[];
38
+ count: number;
39
+ }
40
+ export interface StatsResponse {
41
+ totalSpent: number;
42
+ transactionCount: number;
43
+ lastTransactionDate?: string;
44
+ }
45
+ export interface ITransactionService {
46
+ create(data: CreateTransactionDto): Observable<Transaction>;
47
+ findAll(data: FindTransactionsDto): Observable<TransactionsResponse>;
48
+ search(data: SearchTransactionsDto): Observable<TransactionsResult>;
49
+ findOne(data: {
50
+ id: string;
51
+ }): Observable<Transaction>;
52
+ getStats(data: {
53
+ cardId?: string;
54
+ }): Observable<StatsResponse>;
55
+ update(data: {
56
+ id: string;
57
+ } & UpdateTransactionDto): Observable<Transaction>;
58
+ remove(data: {
59
+ id: string;
60
+ }): Observable<{
61
+ success: boolean;
62
+ }>;
63
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=transaction.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.contract.js","sourceRoot":"","sources":["../../src/contracts/transaction.contract.ts"],"names":[],"mappings":""}
@@ -17,8 +17,10 @@ export declare class EmployeeLoginDto {
17
17
  password: string;
18
18
  }
19
19
  export declare class PublicLoginDto {
20
- username: string;
20
+ username?: string;
21
+ email?: string;
21
22
  password: string;
23
+ role?: string;
22
24
  }
23
25
  export interface UserResponse {
24
26
  id: string;
@@ -73,13 +73,24 @@ class PublicLoginDto {
73
73
  exports.PublicLoginDto = PublicLoginDto;
74
74
  __decorate([
75
75
  (0, class_validator_1.IsString)(),
76
+ (0, class_validator_1.IsOptional)(),
76
77
  __metadata("design:type", String)
77
78
  ], PublicLoginDto.prototype, "username", void 0);
79
+ __decorate([
80
+ (0, class_validator_1.IsEmail)(),
81
+ (0, class_validator_1.IsOptional)(),
82
+ __metadata("design:type", String)
83
+ ], PublicLoginDto.prototype, "email", void 0);
78
84
  __decorate([
79
85
  (0, class_validator_1.IsString)(),
80
86
  (0, class_validator_1.MinLength)(8),
81
87
  __metadata("design:type", String)
82
88
  ], PublicLoginDto.prototype, "password", void 0);
89
+ __decorate([
90
+ (0, class_validator_1.IsString)(),
91
+ (0, class_validator_1.IsOptional)(),
92
+ __metadata("design:type", String)
93
+ ], PublicLoginDto.prototype, "role", void 0);
83
94
  class InviteRequestBody {
84
95
  }
85
96
  exports.InviteRequestBody = InviteRequestBody;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../src/dto/auth.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../src/dto/auth.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ExceptionFilter, ArgumentsHost } from '@nestjs/common';
2
+ import type { IRemoteLogger } from '../types/logger.interface';
3
+ export declare class GlobalExceptionFilter implements ExceptionFilter {
4
+ private readonly logger;
5
+ private remoteLogger?;
6
+ constructor(remoteLogger?: IRemoteLogger);
7
+ catch(exception: any, host: ArgumentsHost): any;
8
+ private handleHttpException;
9
+ private handleRpcException;
10
+ private mapGrpcStatusToHttp;
11
+ private mapHttpStatusToGrpc;
12
+ }
@@ -0,0 +1,152 @@
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 GlobalExceptionFilter_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.GlobalExceptionFilter = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const microservices_1 = require("@nestjs/microservices");
16
+ const rxjs_1 = require("rxjs");
17
+ let GlobalExceptionFilter = GlobalExceptionFilter_1 = class GlobalExceptionFilter {
18
+ constructor(remoteLogger) {
19
+ this.logger = new common_1.Logger(GlobalExceptionFilter_1.name);
20
+ this.remoteLogger = remoteLogger;
21
+ }
22
+ catch(exception, host) {
23
+ const type = host.getType();
24
+ if (type === 'http') {
25
+ return this.handleHttpException(exception, host);
26
+ }
27
+ else if (type === 'rpc') {
28
+ return this.handleRpcException(exception, host);
29
+ }
30
+ this.logger.error(`Unhandled exception of type ${type}`, exception instanceof Error ? exception.stack : '');
31
+ return exception;
32
+ }
33
+ handleHttpException(exception, host) {
34
+ const ctx = host.switchToHttp();
35
+ const response = ctx.getResponse();
36
+ const request = ctx.getRequest();
37
+ let status = common_1.HttpStatus.INTERNAL_SERVER_ERROR;
38
+ let message = 'Internal server error';
39
+ let stack = '';
40
+ let errorDetails = null;
41
+ if (exception instanceof common_1.HttpException) {
42
+ status = exception.getStatus();
43
+ const res = exception.getResponse();
44
+ message = typeof res === 'string' ? res : res.message || exception.message;
45
+ errorDetails = typeof res === 'object' ? res : null;
46
+ stack = exception.stack || '';
47
+ }
48
+ else if (exception.code !== undefined && typeof exception.code === 'number') {
49
+ status = this.mapGrpcStatusToHttp(exception.code);
50
+ message = exception.details || exception.message || 'Microservice Error';
51
+ errorDetails = { grpcCode: exception.code, details: exception.details };
52
+ stack = exception.stack || '';
53
+ }
54
+ else if (exception instanceof Error) {
55
+ message = exception.message;
56
+ stack = exception.stack || '';
57
+ }
58
+ const logMetadata = {
59
+ method: request.method,
60
+ url: request.url,
61
+ body: request.body,
62
+ query: request.query,
63
+ params: request.params,
64
+ clientIp: request.ip,
65
+ status,
66
+ errorDetails,
67
+ stack,
68
+ };
69
+ const logPrefix = `[${request.method}] ${request.url} - ${status}`;
70
+ if (status >= 500) {
71
+ this.logger.error(`${logPrefix} : ${message}`, stack);
72
+ }
73
+ else {
74
+ this.logger.warn(`${logPrefix} : ${message}`);
75
+ }
76
+ if (this.remoteLogger) {
77
+ if (status >= 500) {
78
+ this.remoteLogger.error(`${logPrefix} (Unhandled)`, 'GlobalExceptionFilter', logMetadata);
79
+ }
80
+ else {
81
+ this.remoteLogger.warn(`${logPrefix} (Handled)`, 'GlobalExceptionFilter', logMetadata);
82
+ }
83
+ }
84
+ return response.status(status).json({
85
+ statusCode: status,
86
+ timestamp: new Date().toISOString(),
87
+ path: request.url,
88
+ message: message,
89
+ errorDetails,
90
+ ...(process.env.NODE_ENV === 'development' && { stack }),
91
+ });
92
+ }
93
+ handleRpcException(exception, host) {
94
+ let message = 'Internal RPC error';
95
+ let code = 13;
96
+ if (exception instanceof microservices_1.RpcException) {
97
+ const error = exception.getError();
98
+ message = typeof error === 'string' ? error : error.message || JSON.stringify(error);
99
+ code = error.code || 13;
100
+ }
101
+ else if (exception instanceof common_1.HttpException) {
102
+ message = exception.message;
103
+ code = this.mapHttpStatusToGrpc(exception.getStatus());
104
+ }
105
+ else if (exception instanceof Error) {
106
+ message = exception.message;
107
+ }
108
+ this.logger.error(`RPC Exception [${code}]: ${message}`, exception.stack);
109
+ if (this.remoteLogger) {
110
+ this.remoteLogger.error(`RPC Exception [${code}]`, 'GlobalExceptionFilter', {
111
+ message,
112
+ code,
113
+ stack: exception.stack
114
+ });
115
+ }
116
+ return (0, rxjs_1.throwError)(() => ({
117
+ code,
118
+ message,
119
+ timestamp: new Date().toISOString(),
120
+ }));
121
+ }
122
+ mapGrpcStatusToHttp(code) {
123
+ switch (code) {
124
+ case 5: return common_1.HttpStatus.NOT_FOUND;
125
+ case 3: return common_1.HttpStatus.BAD_REQUEST;
126
+ case 16: return common_1.HttpStatus.UNAUTHORIZED;
127
+ case 7: return common_1.HttpStatus.FORBIDDEN;
128
+ case 6: return common_1.HttpStatus.CONFLICT;
129
+ case 8: return common_1.HttpStatus.TOO_MANY_REQUESTS;
130
+ case 1: return common_1.HttpStatus.REQUEST_TIMEOUT;
131
+ case 14: return common_1.HttpStatus.SERVICE_UNAVAILABLE;
132
+ default: return common_1.HttpStatus.INTERNAL_SERVER_ERROR;
133
+ }
134
+ }
135
+ mapHttpStatusToGrpc(status) {
136
+ switch (status) {
137
+ case common_1.HttpStatus.NOT_FOUND: return 5;
138
+ case common_1.HttpStatus.BAD_REQUEST: return 3;
139
+ case common_1.HttpStatus.UNAUTHORIZED: return 16;
140
+ case common_1.HttpStatus.FORBIDDEN: return 7;
141
+ case common_1.HttpStatus.CONFLICT: return 6;
142
+ case common_1.HttpStatus.TOO_MANY_REQUESTS: return 8;
143
+ default: return 13;
144
+ }
145
+ }
146
+ };
147
+ exports.GlobalExceptionFilter = GlobalExceptionFilter;
148
+ exports.GlobalExceptionFilter = GlobalExceptionFilter = GlobalExceptionFilter_1 = __decorate([
149
+ (0, common_1.Catch)(),
150
+ __metadata("design:paramtypes", [Object])
151
+ ], GlobalExceptionFilter);
152
+ //# sourceMappingURL=global-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './global-exception.filter';
@@ -0,0 +1,18 @@
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("./global-exception.filter"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
package/dist/index.d.ts CHANGED
@@ -12,7 +12,16 @@ export * from './utils/user.utils';
12
12
  export * from './utils/app.utils';
13
13
  export * from './utils/health.utils';
14
14
  export * from './utils/tracing.utils';
15
+ export * from './utils/tracing.service';
16
+ export * from './utils/tracing.module';
17
+ export * from './utils/grpc-tracing.interceptor';
18
+ export * from './utils/http-tracing.interceptor';
19
+ export * from './utils/grpc-tracing-server.interceptor';
15
20
  export * from './resilience/circuit-breaker.service';
16
21
  export * from './resilience/resilience.module';
17
22
  export * from './utils/filters';
18
23
  export * from './utils/interceptors';
24
+ export * from './utils/app-logger';
25
+ export * from './filters';
26
+ export * from './middleware';
27
+ export * from './types/logger.interface';
package/dist/index.js CHANGED
@@ -28,8 +28,17 @@ __exportStar(require("./utils/user.utils"), exports);
28
28
  __exportStar(require("./utils/app.utils"), exports);
29
29
  __exportStar(require("./utils/health.utils"), exports);
30
30
  __exportStar(require("./utils/tracing.utils"), exports);
31
+ __exportStar(require("./utils/tracing.service"), exports);
32
+ __exportStar(require("./utils/tracing.module"), exports);
33
+ __exportStar(require("./utils/grpc-tracing.interceptor"), exports);
34
+ __exportStar(require("./utils/http-tracing.interceptor"), exports);
35
+ __exportStar(require("./utils/grpc-tracing-server.interceptor"), exports);
31
36
  __exportStar(require("./resilience/circuit-breaker.service"), exports);
32
37
  __exportStar(require("./resilience/resilience.module"), exports);
33
38
  __exportStar(require("./utils/filters"), exports);
34
39
  __exportStar(require("./utils/interceptors"), exports);
40
+ __exportStar(require("./utils/app-logger"), exports);
41
+ __exportStar(require("./filters"), exports);
42
+ __exportStar(require("./middleware"), exports);
43
+ __exportStar(require("./types/logger.interface"), exports);
35
44
  //# 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,4BAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,+CAA6B;AAC7B,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC;AACrC,wDAAsC;AACtC,uEAAqD;AACrD,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,+CAA6B;AAC7B,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,yDAAuC;AACvC,mEAAiD;AACjD,mEAAiD;AACjD,0EAAwD;AACxD,uEAAqD;AACrD,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC;AAErC,qDAAmC;AACnC,4CAA0B;AAC1B,+CAA6B;AAC7B,2DAAyC"}
@@ -0,0 +1,2 @@
1
+ export * from './prisma-logging.middleware';
2
+ export * from './tracing.middleware';
@@ -0,0 +1,19 @@
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("./prisma-logging.middleware"), exports);
18
+ __exportStar(require("./tracing.middleware"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,uDAAqC"}
@@ -0,0 +1,3 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { IRemoteLogger } from '../types/logger.interface';
3
+ export declare function createPrismaLoggingMiddleware(logger: Logger, remoteLogger?: IRemoteLogger): (params: any, next: (params: any) => Promise<any>) => Promise<any>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPrismaLoggingMiddleware = createPrismaLoggingMiddleware;
4
+ function createPrismaLoggingMiddleware(logger, remoteLogger) {
5
+ const SLOW_QUERY_THRESHOLD_MS = 100;
6
+ return async (params, next) => {
7
+ const before = Date.now();
8
+ let result;
9
+ let error;
10
+ try {
11
+ result = await next(params);
12
+ }
13
+ catch (e) {
14
+ error = e;
15
+ throw e;
16
+ }
17
+ finally {
18
+ const after = Date.now();
19
+ const duration = after - before;
20
+ const model = params.model;
21
+ const action = params.action;
22
+ const queryName = `${model}.${action}`;
23
+ const logMetadata = {
24
+ model,
25
+ action,
26
+ duration,
27
+ args: params.args,
28
+ };
29
+ if (error) {
30
+ const errorMessage = error instanceof Error ? error.message : String(error);
31
+ logger.error(`[Prisma Failure] ${queryName} - ${duration}ms | Error: ${errorMessage}`);
32
+ if (remoteLogger) {
33
+ remoteLogger.error(`Prisma Query Failed: ${queryName}`, 'PrismaClient', {
34
+ ...logMetadata,
35
+ error: errorMessage,
36
+ });
37
+ }
38
+ }
39
+ else if (duration >= SLOW_QUERY_THRESHOLD_MS) {
40
+ logger.warn(`[Slow Query] ${queryName} took ${duration}ms`);
41
+ if (remoteLogger) {
42
+ remoteLogger.warn(`Slow Database Query: ${queryName}`, 'PrismaClient', logMetadata);
43
+ }
44
+ }
45
+ else {
46
+ logger.debug(`[Query] ${queryName} took ${duration}ms`);
47
+ }
48
+ }
49
+ return result;
50
+ };
51
+ }
52
+ //# sourceMappingURL=prisma-logging.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-logging.middleware.js","sourceRoot":"","sources":["../../src/middleware/prisma-logging.middleware.ts"],"names":[],"mappings":";;AAQA,sEAmDC;AAnDD,SAAgB,6BAA6B,CACzC,MAAc,EACd,YAA4B;IAE5B,MAAM,uBAAuB,GAAG,GAAG,CAAC;IAEpC,OAAO,KAAK,EAAE,MAAW,EAAE,IAAmC,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,MAAW,CAAC;QAChB,IAAI,KAAU,CAAC;QAEf,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,CAAC,CAAC;QACZ,CAAC;gBAAS,CAAC;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;YAEvC,MAAM,WAAW,GAAG;gBAChB,KAAK;gBACL,MAAM;gBACN,QAAQ;gBACR,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,MAAM,QAAQ,eAAe,YAAY,EAAE,CAAC,CAAC;gBACvF,IAAI,YAAY,EAAE,CAAC;oBACf,YAAY,CAAC,KAAK,CAAC,wBAAwB,SAAS,EAAE,EAAE,cAAc,EAAE;wBACpE,GAAG,WAAW;wBACd,KAAK,EAAE,YAAY;qBACtB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;iBAAM,IAAI,QAAQ,IAAI,uBAAuB,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,gBAAgB,SAAS,SAAS,QAAQ,IAAI,CAAC,CAAC;gBAC5D,IAAI,YAAY,EAAE,CAAC;oBACf,YAAY,CAAC,IAAI,CAAC,wBAAwB,SAAS,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;gBACxF,CAAC;YACL,CAAC;iBAAM,CAAC;gBAEJ,MAAM,CAAC,KAAK,CAAC,WAAW,SAAS,SAAS,QAAQ,IAAI,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { Request, Response, NextFunction } from 'express';
3
+ import { TracingService } from '../utils/tracing.service';
4
+ export declare class TracingMiddleware implements NestMiddleware {
5
+ private readonly tracingService;
6
+ constructor(tracingService: TracingService);
7
+ use(req: Request, res: Response, next: NextFunction): void;
8
+ }