Skip to content

Commit 83a0e4b

Browse files
resolve conflict
2 parents 6307bc7 + bede6b9 commit 83a0e4b

File tree

8 files changed

+249
-259
lines changed

8 files changed

+249
-259
lines changed

package.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ack-nestjs-boilerplate-kafka",
3-
"version": "3.4.3",
3+
"version": "3.5.0",
44
"description": "Ack NestJs Boilerplate Kafka",
55
"repository": {
66
"type": "git",
@@ -48,7 +48,7 @@
4848
"rollback": "yarn rollback:setting && yarn rollback:apikey"
4949
},
5050
"dependencies": {
51-
"@aws-sdk/client-s3": "^3.276.0",
51+
"@aws-sdk/client-s3": "^3.278.0",
5252
"@faker-js/faker": "^7.6.0",
5353
"@joi/date": "^2.1.0",
5454
"@nestjs/axios": "^2.0.0",
@@ -63,18 +63,18 @@
6363
"@nestjs/schedule": "^2.2.0",
6464
"@nestjs/swagger": "^6.2.1",
6565
"@nestjs/terminus": "^9.2.1",
66+
"@nestjs/throttler": "^4.0.0",
6667
"@types/response-time": "^2.3.5",
6768
"bcryptjs": "^2.4.3",
6869
"class-transformer": "^0.5.1",
6970
"class-validator": "^0.14.0",
7071
"crypto-js": "^4.1.1",
71-
"express-rate-limit": "^6.7.0",
7272
"geolib": "^3.3.3",
7373
"helmet": "^6.0.1",
7474
"joi": "^17.8.3",
7575
"kafkajs": "^2.2.3",
7676
"moment": "^2.29.4",
77-
"mongoose": "^6.9.2",
77+
"mongoose": "^6.10.0",
7878
"morgan": "^1.10.0",
7979
"nest-winston": "^1.8.0",
8080
"nestjs-command": "^3.1.3",
@@ -104,13 +104,12 @@
104104
"@types/cron": "^2.0.0",
105105
"@types/crypto-js": "^4.1.1",
106106
"@types/express": "^4.17.17",
107-
"@types/express-rate-limit": "^6.0.0",
108107
"@types/jest": "^29.4.0",
109108
"@types/lodash": "^4.14.191",
110109
"@types/morgan": "^1.9.4",
111110
"@types/ms": "^0.7.31",
112111
"@types/multer": "^1.4.7",
113-
"@types/node": "^18.14.0",
112+
"@types/node": "^18.14.1",
114113
"@types/passport-jwt": "^3.0.8",
115114
"@types/supertest": "^2.0.12",
116115
"@types/ua-parser-js": "^0.7.36",

src/common/error/filters/error.http.filter.ts

Lines changed: 126 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -65,154 +65,145 @@ export class ErrorHttpFilter implements ExceptionFilter {
6565
request.repoVersion ??
6666
this.configService.get<string>('app.repoVersion');
6767

68+
// Debugger
69+
try {
70+
this.debuggerService.error(
71+
request?.id ? request.id : ErrorHttpFilter.name,
72+
{
73+
description:
74+
exception instanceof Error
75+
? exception.message
76+
: exception.toString(),
77+
class: __class ?? ErrorHttpFilter.name,
78+
function: __function ?? this.catch.name,
79+
path: __path,
80+
},
81+
exception
82+
);
83+
} catch (err: unknown) {}
84+
85+
let statusHttp: HttpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
6886
if (exception instanceof HttpException) {
69-
const statusHttp: number = exception.getStatus();
87+
statusHttp = exception.getStatus();
7088
const responseExpress: Response = ctx.getResponse<Response>();
7189

72-
// Debugger
73-
try {
74-
this.debuggerService.error(
75-
request?.id ? request.id : ErrorHttpFilter.name,
76-
{
77-
description: exception.message,
78-
class: __class,
79-
function: __function,
80-
path: __path,
81-
},
82-
exception
83-
);
84-
} catch (err: unknown) {}
85-
8690
// Restructure
8791
const response = exception.getResponse();
88-
89-
if (!this.isErrorException(response)) {
90-
responseExpress.status(statusHttp).json(response);
92+
if (this.isErrorException(response)) {
93+
const responseException = response as IErrorException;
94+
const {
95+
statusCode,
96+
message,
97+
_errorType,
98+
data,
99+
properties,
100+
_metadata,
101+
} = responseException;
102+
103+
let { errors, _error } = responseException;
104+
if (errors?.length > 0) {
105+
errors =
106+
_errorType === ERROR_TYPE.IMPORT
107+
? await this.messageService.getImportErrorsMessage(
108+
errors as IValidationErrorImport[],
109+
customLang
110+
)
111+
: await this.messageService.getRequestErrorsMessage(
112+
errors as ValidationError[],
113+
customLang
114+
);
115+
}
116+
117+
if (!_error) {
118+
_error =
119+
'message' in exception ? exception.message : undefined;
120+
} else if (typeof _error !== 'string') {
121+
_error = JSON.stringify(_error);
122+
}
123+
124+
const mapMessage: string | IMessage =
125+
await this.messageService.get(message, {
126+
customLanguages: customLang,
127+
properties,
128+
});
129+
130+
const resMetadata: IErrorHttpFilterMetadata = {
131+
languages: customLang,
132+
timestamp: __timestamp,
133+
timezone: __timezone,
134+
requestId: __requestId,
135+
path: __path,
136+
version: __version,
137+
repoVersion: __repoVersion,
138+
..._metadata,
139+
};
140+
141+
const resResponse: IErrorHttpFilter = {
142+
statusCode: statusCode ?? statusHttp,
143+
message: mapMessage,
144+
_error,
145+
errors: errors as IErrors[] | IErrorsImport[],
146+
_metadata: resMetadata,
147+
data,
148+
};
149+
150+
responseExpress
151+
.setHeader('x-custom-lang', customLang)
152+
.setHeader('x-timestamp', __timestamp)
153+
.setHeader('x-timezone', __timezone)
154+
.setHeader('x-request-id', __requestId)
155+
.setHeader('x-version', __version)
156+
.setHeader('x-repo-version', __repoVersion)
157+
.status(statusHttp)
158+
.json(resResponse);
91159

92160
return;
93161
}
94-
95-
const responseException = response as IErrorException;
96-
const {
97-
statusCode,
98-
message,
99-
_errorType,
100-
data,
101-
properties,
102-
_metadata,
103-
} = responseException;
104-
105-
let { errors, _error } = responseException;
106-
if (errors?.length > 0) {
107-
errors =
108-
_errorType === ERROR_TYPE.IMPORT
109-
? await this.messageService.getImportErrorsMessage(
110-
errors as IValidationErrorImport[],
111-
customLang
112-
)
113-
: await this.messageService.getRequestErrorsMessage(
114-
errors as ValidationError[],
115-
customLang
116-
);
117-
}
118-
119-
if (!_error) {
120-
_error = 'message' in exception ? exception.message : undefined;
121-
} else if (typeof _error !== 'string') {
122-
_error = JSON.stringify(_error);
123-
}
124-
125-
const mapMessage: string | IMessage = await this.messageService.get(
126-
message,
127-
{ customLanguages: customLang, properties }
128-
);
129-
130-
const resMetadata: IErrorHttpFilterMetadata = {
131-
languages: customLang,
132-
timestamp: __timestamp,
133-
timezone: __timezone,
134-
requestId: __requestId,
135-
path: __path,
136-
version: __version,
137-
repoVersion: __repoVersion,
138-
..._metadata,
139-
};
140-
141-
const resResponse: IErrorHttpFilter = {
142-
statusCode: statusCode ?? statusHttp,
143-
message: mapMessage,
144-
_error,
145-
errors: errors as IErrors[] | IErrorsImport[],
146-
_metadata: resMetadata,
147-
data,
148-
};
149-
150-
responseExpress
151-
.setHeader('x-custom-lang', customLang)
152-
.setHeader('x-timestamp', __timestamp)
153-
.setHeader('x-timezone', __timezone)
154-
.setHeader('x-request-id', __requestId)
155-
.setHeader('x-version', __version)
156-
.setHeader('x-repo-version', __repoVersion)
157-
.status(statusHttp)
158-
.json(resResponse);
159-
} else {
160-
// In certain situations `httpAdapter` might not be available in the
161-
// constructor method, thus we should resolve it here.
162-
const message: string = (await this.messageService.get(
163-
'http.serverError.internalServerError'
164-
)) as string;
165-
166-
const _metadata: IErrorHttpFilterMetadata = {
167-
languages: customLang,
168-
timestamp: __timestamp,
169-
timezone: __timezone,
170-
requestId: __requestId,
171-
path: __path,
172-
version: __version,
173-
repoVersion: __repoVersion,
174-
};
175-
176-
const responseBody = {
177-
statusCode: HttpStatus.INTERNAL_SERVER_ERROR,
178-
message,
179-
_error:
180-
exception instanceof Error && 'message' in exception
181-
? exception.message
182-
: undefined,
183-
_metadata,
184-
};
185-
186-
// Debugger
187-
try {
188-
this.debuggerService.error(
189-
ErrorHttpFilter.name,
190-
{
191-
description: message,
192-
class: ErrorHttpFilter.name,
193-
function: 'catch',
194-
path: __path,
195-
},
196-
exception
197-
);
198-
} catch (err: unknown) {}
199-
200-
const responseExpress: Response = ctx.getResponse<Response>();
201-
responseExpress
202-
.setHeader('x-custom-lang', customLang)
203-
.setHeader('x-timestamp', __timestamp)
204-
.setHeader('x-timezone', __timezone)
205-
.setHeader('x-request-id', __requestId)
206-
.setHeader('x-version', __version)
207-
.setHeader('x-repo-version', __repoVersion)
208-
.status(HttpStatus.INTERNAL_SERVER_ERROR)
209-
.json(responseBody);
210162
}
211163

164+
// In certain situations `httpAdapter` might not be available in the
165+
// constructor method, thus we should resolve it here.
166+
const message: string = await this.messageService.get(
167+
`http.${statusHttp}`
168+
);
169+
170+
const _metadata: IErrorHttpFilterMetadata = {
171+
languages: customLang,
172+
timestamp: __timestamp,
173+
timezone: __timezone,
174+
requestId: __requestId,
175+
path: __path,
176+
version: __version,
177+
repoVersion: __repoVersion,
178+
};
179+
180+
const responseBody = {
181+
statusCode: statusHttp,
182+
message,
183+
_error:
184+
exception instanceof Error && 'message' in exception
185+
? exception.message
186+
: exception,
187+
_metadata,
188+
};
189+
190+
const responseExpress: Response = ctx.getResponse<Response>();
191+
responseExpress
192+
.setHeader('x-custom-lang', customLang)
193+
.setHeader('x-timestamp', __timestamp)
194+
.setHeader('x-timezone', __timezone)
195+
.setHeader('x-request-id', __requestId)
196+
.setHeader('x-version', __version)
197+
.setHeader('x-repo-version', __repoVersion)
198+
.status(HttpStatus.INTERNAL_SERVER_ERROR)
199+
.json(responseBody);
200+
212201
return;
213202
}
214203

215204
isErrorException(obj: any): obj is IErrorException {
216-
return 'statusCode' in obj && 'message' in obj;
205+
return typeof obj === 'object'
206+
? 'statusCode' in obj && 'message' in obj
207+
: false;
217208
}
218209
}

src/common/message/services/message.service.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,7 @@ export class MessageService implements IMessageService {
108108
return newErrors;
109109
}
110110

111-
async get(
112-
key: string,
113-
options?: IMessageOptions
114-
): Promise<string | IMessage> {
111+
async get<T = string>(key: string, options?: IMessageOptions): Promise<T> {
115112
const properties = options?.properties;
116113
const customLanguages =
117114
options?.customLanguages?.length > 0
@@ -130,9 +127,9 @@ export class MessageService implements IMessageService {
130127
}
131128

132129
if (customLanguages.length <= 1) {
133-
return messages[customLanguages[0]];
130+
return messages[customLanguages[0]] as T;
134131
}
135132

136-
return messages;
133+
return messages as T;
137134
}
138135
}

src/common/request/middleware/rate-limit/request.rate-limit.middleware.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)