@koalarx/nest 1.5.0 → 1.6.0
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/core/koala-app.js +6 -5
- package/filters/domain-errors.filter.d.ts +3 -0
- package/filters/domain-errors.filter.js +30 -2
- package/filters/global-exception.filter.d.ts +3 -1
- package/filters/global-exception.filter.js +28 -4
- package/filters/prisma-validation-exception.filter.d.ts +3 -0
- package/filters/prisma-validation-exception.filter.js +30 -2
- package/filters/zod-errors.filter.d.ts +3 -0
- package/filters/zod-errors.filter.js +30 -1
- package/package.json +1 -1
- package/test/koala-app-test.js +6 -5
- package/tsconfig.lib.tsbuildinfo +1 -1
package/core/koala-app.js
CHANGED
|
@@ -12,6 +12,7 @@ const prisma_validation_exception_filter_1 = require("../filters/prisma-validati
|
|
|
12
12
|
const zod_errors_filter_1 = require("../filters/zod-errors.filter");
|
|
13
13
|
const koala_global_vars_1 = require("./koala-global-vars");
|
|
14
14
|
const env_config_1 = require("./utils/env.config");
|
|
15
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
15
16
|
class KoalaApp {
|
|
16
17
|
app;
|
|
17
18
|
_globalExceptionFilter;
|
|
@@ -23,11 +24,11 @@ class KoalaApp {
|
|
|
23
24
|
constructor(app) {
|
|
24
25
|
this.app = app;
|
|
25
26
|
const { httpAdapter } = app.get(core_1.HttpAdapterHost);
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
this._domainExceptionFilter = new domain_errors_filter_1.DomainErrorsFilter();
|
|
30
|
-
this._zodExceptionFilter = new zod_errors_filter_1.ZodErrorsFilter();
|
|
27
|
+
const loggingService = app.get(ilogging_service_1.ILoggingService);
|
|
28
|
+
this._globalExceptionFilter = new global_exception_filter_1.GlobalExceptionsFilter(httpAdapter, loggingService);
|
|
29
|
+
this._prismaValidationExceptionFilter = new prisma_validation_exception_filter_1.PrismaValidationExceptionFilter(loggingService);
|
|
30
|
+
this._domainExceptionFilter = new domain_errors_filter_1.DomainErrorsFilter(loggingService);
|
|
31
|
+
this._zodExceptionFilter = new zod_errors_filter_1.ZodErrorsFilter(loggingService);
|
|
31
32
|
}
|
|
32
33
|
addCronJob(job) {
|
|
33
34
|
this._cronJobs.push(job);
|
|
@@ -8,8 +8,11 @@ import { NotAllowedError } from '../core/errors/not-allowed.error';
|
|
|
8
8
|
import { ResourceNotFoundError } from '../core/errors/resource-not-found.error';
|
|
9
9
|
import { UserAlreadyExist } from '../core/errors/user-already-exist.error';
|
|
10
10
|
import { WrongCredentialsError } from '../core/errors/wrong-credentials.error';
|
|
11
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
11
12
|
type DomainErrors = NotAllowedError | ResourceNotFoundError | UserAlreadyExist | WrongCredentialsError | ConflictError | BadRequestError | NoContentError;
|
|
12
13
|
export declare class DomainErrorsFilter extends BaseExceptionFilter {
|
|
14
|
+
private readonly loggingService;
|
|
15
|
+
constructor(loggingService: ILoggingService);
|
|
13
16
|
catch(exception: DomainErrors, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
14
17
|
private map;
|
|
15
18
|
}
|
|
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.DomainErrorsFilter = void 0;
|
|
10
13
|
const common_1 = require("@nestjs/common");
|
|
@@ -16,13 +19,37 @@ const not_allowed_error_1 = require("../core/errors/not-allowed.error");
|
|
|
16
19
|
const resource_not_found_error_1 = require("../core/errors/resource-not-found.error");
|
|
17
20
|
const user_already_exist_error_1 = require("../core/errors/user-already-exist.error");
|
|
18
21
|
const wrong_credentials_error_1 = require("../core/errors/wrong-credentials.error");
|
|
22
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
23
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
19
24
|
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
25
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
20
26
|
let DomainErrorsFilter = exports.DomainErrorsFilter = class DomainErrorsFilter extends core_1.BaseExceptionFilter {
|
|
27
|
+
loggingService;
|
|
28
|
+
constructor(loggingService) {
|
|
29
|
+
super();
|
|
30
|
+
this.loggingService = loggingService;
|
|
31
|
+
}
|
|
21
32
|
catch(exception, host) {
|
|
22
33
|
const mappedException = this.map(exception);
|
|
23
34
|
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
24
35
|
if (mappedException.statusCode !== common_1.HttpStatus.UNAUTHORIZED) {
|
|
25
|
-
|
|
36
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
37
|
+
this.loggingService
|
|
38
|
+
.report({
|
|
39
|
+
error: exception,
|
|
40
|
+
packageName: koala_global_vars_1.KoalaGlobalVars.appName,
|
|
41
|
+
loggedUsername: filterRequestParams.loggedUserName,
|
|
42
|
+
httpRequest: {
|
|
43
|
+
...filterRequestParams.filterParams,
|
|
44
|
+
statusCode: mappedException.statusCode,
|
|
45
|
+
response: mappedException,
|
|
46
|
+
},
|
|
47
|
+
})
|
|
48
|
+
.catch((err) => console.error(err));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.error(exception);
|
|
52
|
+
}
|
|
26
53
|
}
|
|
27
54
|
return filterRequestParams.response
|
|
28
55
|
.status(mappedException.statusCode)
|
|
@@ -58,5 +85,6 @@ let DomainErrorsFilter = exports.DomainErrorsFilter = class DomainErrorsFilter e
|
|
|
58
85
|
}
|
|
59
86
|
};
|
|
60
87
|
exports.DomainErrorsFilter = DomainErrorsFilter = __decorate([
|
|
61
|
-
(0, common_1.Catch)(not_allowed_error_1.NotAllowedError, resource_not_found_error_1.ResourceNotFoundError, user_already_exist_error_1.UserAlreadyExist, wrong_credentials_error_1.WrongCredentialsError, conflict_error_1.ConflictError, bad_request_error_1.BadRequestError, no_content_error_1.NoContentError)
|
|
88
|
+
(0, common_1.Catch)(not_allowed_error_1.NotAllowedError, resource_not_found_error_1.ResourceNotFoundError, user_already_exist_error_1.UserAlreadyExist, wrong_credentials_error_1.WrongCredentialsError, conflict_error_1.ConflictError, bad_request_error_1.BadRequestError, no_content_error_1.NoContentError),
|
|
89
|
+
__metadata("design:paramtypes", [ilogging_service_1.ILoggingService])
|
|
62
90
|
], DomainErrorsFilter);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ArgumentsHost } from '@nestjs/common';
|
|
2
2
|
import { AbstractHttpAdapter, BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
3
4
|
export declare class GlobalExceptionsFilter extends BaseExceptionFilter {
|
|
4
5
|
private readonly httpAdapter;
|
|
5
|
-
|
|
6
|
+
private readonly loggingService;
|
|
7
|
+
constructor(httpAdapter: AbstractHttpAdapter, loggingService: ILoggingService);
|
|
6
8
|
catch(exception: Error, host: ArgumentsHost): void;
|
|
7
9
|
}
|
|
@@ -12,12 +12,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.GlobalExceptionsFilter = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const core_1 = require("@nestjs/core");
|
|
15
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
16
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
15
17
|
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
18
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
16
19
|
let GlobalExceptionsFilter = exports.GlobalExceptionsFilter = class GlobalExceptionsFilter extends core_1.BaseExceptionFilter {
|
|
17
20
|
httpAdapter;
|
|
18
|
-
|
|
21
|
+
loggingService;
|
|
22
|
+
constructor(httpAdapter, loggingService) {
|
|
19
23
|
super();
|
|
20
24
|
this.httpAdapter = httpAdapter;
|
|
25
|
+
this.loggingService = loggingService;
|
|
21
26
|
}
|
|
22
27
|
catch(exception, host) {
|
|
23
28
|
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
@@ -32,12 +37,31 @@ let GlobalExceptionsFilter = exports.GlobalExceptionsFilter = class GlobalExcept
|
|
|
32
37
|
path: filterRequestParams.filterParams.endpoint,
|
|
33
38
|
};
|
|
34
39
|
this.httpAdapter.reply(filterRequestParams.response, responseBody, statusCode);
|
|
35
|
-
if (
|
|
36
|
-
|
|
40
|
+
if (!exception.message?.includes('Cannot GET /socket.io') &&
|
|
41
|
+
!exception.message?.includes('Cannot GET /favicon.ico') &&
|
|
42
|
+
statusCode !== common_1.HttpStatus.UNAUTHORIZED) {
|
|
43
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
44
|
+
this.loggingService
|
|
45
|
+
.report({
|
|
46
|
+
error: exception,
|
|
47
|
+
packageName: koala_global_vars_1.KoalaGlobalVars.appName,
|
|
48
|
+
loggedUsername: filterRequestParams.loggedUserName,
|
|
49
|
+
httpRequest: {
|
|
50
|
+
...filterRequestParams.filterParams,
|
|
51
|
+
statusCode,
|
|
52
|
+
response: responseBody,
|
|
53
|
+
},
|
|
54
|
+
})
|
|
55
|
+
.catch((err) => console.error(err));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.error(exception);
|
|
59
|
+
}
|
|
37
60
|
}
|
|
38
61
|
}
|
|
39
62
|
};
|
|
40
63
|
exports.GlobalExceptionsFilter = GlobalExceptionsFilter = __decorate([
|
|
41
64
|
(0, common_1.Catch)(),
|
|
42
|
-
__metadata("design:paramtypes", [core_1.AbstractHttpAdapter
|
|
65
|
+
__metadata("design:paramtypes", [core_1.AbstractHttpAdapter,
|
|
66
|
+
ilogging_service_1.ILoggingService])
|
|
43
67
|
], GlobalExceptionsFilter);
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
import { ArgumentsHost } from '@nestjs/common';
|
|
3
3
|
import { BaseExceptionFilter } from '@nestjs/core';
|
|
4
4
|
import { Prisma } from '@prisma/client';
|
|
5
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
5
6
|
export declare class PrismaValidationExceptionFilter extends BaseExceptionFilter {
|
|
7
|
+
private readonly loggingService;
|
|
8
|
+
constructor(loggingService: ILoggingService);
|
|
6
9
|
catch(exception: Prisma.PrismaClientKnownRequestError, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
7
10
|
private translate;
|
|
8
11
|
}
|
|
@@ -5,18 +5,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.PrismaValidationExceptionFilter = void 0;
|
|
10
13
|
const common_1 = require("@nestjs/common");
|
|
11
14
|
const core_1 = require("@nestjs/core");
|
|
12
15
|
const client_1 = require("@prisma/client");
|
|
16
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
17
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
13
18
|
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
19
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
14
20
|
let PrismaValidationExceptionFilter = exports.PrismaValidationExceptionFilter = class PrismaValidationExceptionFilter extends core_1.BaseExceptionFilter {
|
|
21
|
+
loggingService;
|
|
22
|
+
constructor(loggingService) {
|
|
23
|
+
super();
|
|
24
|
+
this.loggingService = loggingService;
|
|
25
|
+
}
|
|
15
26
|
catch(exception, host) {
|
|
16
27
|
const translatedResponse = this.translate(exception);
|
|
17
28
|
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
18
29
|
if (translatedResponse.statusCode !== common_1.HttpStatus.UNAUTHORIZED) {
|
|
19
|
-
|
|
30
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
31
|
+
this.loggingService
|
|
32
|
+
.report({
|
|
33
|
+
error: exception,
|
|
34
|
+
packageName: koala_global_vars_1.KoalaGlobalVars.appName,
|
|
35
|
+
loggedUsername: filterRequestParams.loggedUserName,
|
|
36
|
+
httpRequest: {
|
|
37
|
+
...filterRequestParams.filterParams,
|
|
38
|
+
statusCode: translatedResponse.statusCode,
|
|
39
|
+
response: translatedResponse,
|
|
40
|
+
},
|
|
41
|
+
})
|
|
42
|
+
.catch((err) => console.error(err));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.error(exception);
|
|
46
|
+
}
|
|
20
47
|
}
|
|
21
48
|
return filterRequestParams.response
|
|
22
49
|
.status(translatedResponse.statusCode)
|
|
@@ -49,5 +76,6 @@ let PrismaValidationExceptionFilter = exports.PrismaValidationExceptionFilter =
|
|
|
49
76
|
}
|
|
50
77
|
};
|
|
51
78
|
exports.PrismaValidationExceptionFilter = PrismaValidationExceptionFilter = __decorate([
|
|
52
|
-
(0, common_1.Catch)(client_1.Prisma.PrismaClientKnownRequestError)
|
|
79
|
+
(0, common_1.Catch)(client_1.Prisma.PrismaClientKnownRequestError),
|
|
80
|
+
__metadata("design:paramtypes", [ilogging_service_1.ILoggingService])
|
|
53
81
|
], PrismaValidationExceptionFilter);
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
import { ArgumentsHost } from '@nestjs/common';
|
|
3
3
|
import { BaseExceptionFilter } from '@nestjs/core';
|
|
4
4
|
import { ZodError } from 'zod';
|
|
5
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
5
6
|
export declare class ZodErrorsFilter extends BaseExceptionFilter {
|
|
7
|
+
private readonly loggingService;
|
|
8
|
+
constructor(loggingService: ILoggingService);
|
|
6
9
|
catch(exception: ZodError, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
7
10
|
}
|
|
@@ -5,14 +5,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.ZodErrorsFilter = void 0;
|
|
10
13
|
const common_1 = require("@nestjs/common");
|
|
11
14
|
const core_1 = require("@nestjs/core");
|
|
12
15
|
const zod_1 = require("zod");
|
|
13
16
|
const zod_validation_error_1 = require("zod-validation-error");
|
|
17
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
18
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
14
19
|
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
20
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
15
21
|
let ZodErrorsFilter = exports.ZodErrorsFilter = class ZodErrorsFilter extends core_1.BaseExceptionFilter {
|
|
22
|
+
loggingService;
|
|
23
|
+
constructor(loggingService) {
|
|
24
|
+
super();
|
|
25
|
+
this.loggingService = loggingService;
|
|
26
|
+
}
|
|
16
27
|
catch(exception, host) {
|
|
17
28
|
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
18
29
|
const zodResponse = {
|
|
@@ -20,11 +31,29 @@ let ZodErrorsFilter = exports.ZodErrorsFilter = class ZodErrorsFilter extends co
|
|
|
20
31
|
statusCode: common_1.HttpStatus.BAD_REQUEST,
|
|
21
32
|
message: 'Dados enviados inválidos',
|
|
22
33
|
};
|
|
34
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
35
|
+
this.loggingService
|
|
36
|
+
.report({
|
|
37
|
+
error: exception,
|
|
38
|
+
packageName: koala_global_vars_1.KoalaGlobalVars.appName,
|
|
39
|
+
loggedUsername: filterRequestParams.loggedUserName,
|
|
40
|
+
httpRequest: {
|
|
41
|
+
...filterRequestParams.filterParams,
|
|
42
|
+
statusCode: common_1.HttpStatus.BAD_REQUEST,
|
|
43
|
+
response: zodResponse,
|
|
44
|
+
},
|
|
45
|
+
})
|
|
46
|
+
.catch((err) => console.error(err));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.error(exception);
|
|
50
|
+
}
|
|
23
51
|
return filterRequestParams.response
|
|
24
52
|
.status(common_1.HttpStatus.BAD_REQUEST)
|
|
25
53
|
.send(zodResponse);
|
|
26
54
|
}
|
|
27
55
|
};
|
|
28
56
|
exports.ZodErrorsFilter = ZodErrorsFilter = __decorate([
|
|
29
|
-
(0, common_1.Catch)(zod_1.ZodError)
|
|
57
|
+
(0, common_1.Catch)(zod_1.ZodError),
|
|
58
|
+
__metadata("design:paramtypes", [ilogging_service_1.ILoggingService])
|
|
30
59
|
], ZodErrorsFilter);
|
package/package.json
CHANGED
package/test/koala-app-test.js
CHANGED
|
@@ -7,6 +7,7 @@ const domain_errors_filter_1 = require("../filters/domain-errors.filter");
|
|
|
7
7
|
const global_exception_filter_1 = require("../filters/global-exception.filter");
|
|
8
8
|
const prisma_validation_exception_filter_1 = require("../filters/prisma-validation-exception.filter");
|
|
9
9
|
const zod_errors_filter_1 = require("../filters/zod-errors.filter");
|
|
10
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
10
11
|
class KoalaAppTest {
|
|
11
12
|
app;
|
|
12
13
|
_globalExceptionFilter;
|
|
@@ -16,11 +17,11 @@ class KoalaAppTest {
|
|
|
16
17
|
constructor(app) {
|
|
17
18
|
this.app = app;
|
|
18
19
|
const { httpAdapter } = app.get(core_1.HttpAdapterHost);
|
|
19
|
-
|
|
20
|
-
this.
|
|
21
|
-
|
|
22
|
-
this._domainExceptionFilter = new domain_errors_filter_1.DomainErrorsFilter();
|
|
23
|
-
this._zodExceptionFilter = new zod_errors_filter_1.ZodErrorsFilter();
|
|
20
|
+
const loggingService = app.get(ilogging_service_1.ILoggingService);
|
|
21
|
+
this._globalExceptionFilter = new global_exception_filter_1.GlobalExceptionsFilter(httpAdapter, loggingService);
|
|
22
|
+
this._prismaValidationExceptionFilter = new prisma_validation_exception_filter_1.PrismaValidationExceptionFilter(loggingService);
|
|
23
|
+
this._domainExceptionFilter = new domain_errors_filter_1.DomainErrorsFilter(loggingService);
|
|
24
|
+
this._zodExceptionFilter = new zod_errors_filter_1.ZodErrorsFilter(loggingService);
|
|
24
25
|
}
|
|
25
26
|
addCustomGlobalExceptionFilter(filter) {
|
|
26
27
|
this._globalExceptionFilter = filter;
|