@koalarx/nest 3.0.2 → 3.0.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.
- package/README.md +504 -0
- package/core/backgroud-services/cron-service/cron-job.handler.base.d.ts +16 -0
- package/core/backgroud-services/cron-service/cron-job.handler.base.js +49 -0
- package/core/backgroud-services/event-service/event-class.d.ts +5 -0
- package/core/backgroud-services/event-service/event-class.js +11 -0
- package/core/backgroud-services/event-service/event-handler.base.d.ts +8 -0
- package/core/backgroud-services/event-service/event-handler.base.js +14 -0
- package/core/backgroud-services/event-service/event-is-trigger.d.ts +3 -0
- package/core/backgroud-services/event-service/event-is-trigger.js +7 -0
- package/core/backgroud-services/event-service/event-job.d.ts +13 -0
- package/core/backgroud-services/event-service/event-job.js +21 -0
- package/core/backgroud-services/event-service/event-queue.d.ts +17 -0
- package/core/backgroud-services/event-service/event-queue.js +62 -0
- package/core/constants/query-params.d.ts +6 -0
- package/core/constants/query-params.js +8 -0
- package/core/controllers/base.controller.d.ts +4 -0
- package/core/controllers/base.controller.js +6 -0
- package/core/controllers/controller.decorator.d.ts +2 -0
- package/core/controllers/controller.decorator.js +11 -0
- package/core/controllers/created-registre-response.base.d.ts +10 -0
- package/core/controllers/created-registre-response.base.js +35 -0
- package/core/controllers/list-response.base.d.ts +4 -0
- package/core/controllers/list-response.base.js +21 -0
- package/core/controllers/pagination.request.d.ts +10 -0
- package/core/controllers/pagination.request.js +56 -0
- package/core/controllers/router-config.base.d.ts +7 -0
- package/core/controllers/router-config.base.js +18 -0
- package/core/controllers/schemas/boolean.schema.d.ts +2 -0
- package/core/controllers/schemas/boolean.schema.js +12 -0
- package/core/controllers/schemas/document-number.schema.d.ts +1 -0
- package/core/controllers/schemas/document-number.schema.js +26 -0
- package/core/controllers/schemas/email.schema.d.ts +1 -0
- package/core/controllers/schemas/email.schema.js +13 -0
- package/core/controllers/schemas/list-query.schema.d.ts +17 -0
- package/core/controllers/schemas/list-query.schema.js +19 -0
- package/core/controllers/schemas/native-enum.schema.d.ts +7 -0
- package/core/controllers/schemas/native-enum.schema.js +28 -0
- package/core/controllers/schemas/set-mask-document-number.schema.d.ts +1 -0
- package/core/controllers/schemas/set-mask-document-number.schema.js +13 -0
- package/core/database/entity.base.d.ts +20 -0
- package/core/database/entity.base.js +71 -0
- package/core/database/entity.decorator.d.ts +13 -0
- package/core/database/entity.decorator.js +23 -0
- package/core/database/prisma-client-with-custom-transaction.interface.d.ts +8 -0
- package/core/database/prisma-client-with-custom-transaction.interface.js +2 -0
- package/core/database/prisma-resolver.d.ts +2 -0
- package/core/database/prisma-resolver.js +74 -0
- package/core/database/prisma-transactional-client.d.ts +11 -0
- package/core/database/prisma-transactional-client.js +25 -0
- package/core/database/prisma.service.d.ts +24 -0
- package/core/database/prisma.service.js +104 -0
- package/core/database/repository.base.d.ts +44 -0
- package/core/database/repository.base.js +360 -0
- package/core/dtos/pagination.dto.d.ts +9 -0
- package/core/dtos/pagination.dto.js +49 -0
- package/core/errors/bad-request.error.d.ts +5 -0
- package/core/errors/bad-request.error.js +10 -0
- package/core/errors/conflict.error.d.ts +4 -0
- package/core/errors/conflict.error.js +10 -0
- package/core/errors/error.base.d.ts +4 -0
- package/core/errors/error.base.js +11 -0
- package/core/errors/no-content.error.d.ts +5 -0
- package/core/errors/no-content.error.js +10 -0
- package/core/errors/not-allowed.error.d.ts +5 -0
- package/core/errors/not-allowed.error.js +10 -0
- package/core/errors/resource-not-found.error.d.ts +5 -0
- package/core/errors/resource-not-found.error.js +10 -0
- package/{src/core/errors/use-case-error.ts → core/errors/use-case-error.d.ts} +1 -1
- package/core/errors/use-case-error.js +2 -0
- package/core/errors/user-already-exist.error.d.ts +4 -0
- package/core/errors/user-already-exist.error.js +10 -0
- package/core/errors/wrong-credentials.error.d.ts +4 -0
- package/core/errors/wrong-credentials.error.js +10 -0
- package/core/health-check/health-check.controller.d.ts +5 -0
- package/core/health-check/health-check.controller.js +32 -0
- package/core/health-check/health-check.module.d.ts +2 -0
- package/core/health-check/health-check.module.js +19 -0
- package/core/index.d.ts +18 -0
- package/core/index.js +7 -0
- package/core/koala-app.d.ts +64 -0
- package/core/koala-app.js +252 -0
- package/core/koala-global-vars.d.ts +7 -0
- package/core/koala-global-vars.js +9 -0
- package/core/koala-nest-database.module.d.ts +16 -0
- package/core/koala-nest-database.module.js +52 -0
- package/core/koala-nest-http.module.d.ts +13 -0
- package/core/koala-nest-http.module.js +37 -0
- package/core/koala-nest.module.d.ts +17 -0
- package/core/koala-nest.module.js +66 -0
- package/core/mapping/auto-mapping-class-context.d.ts +16 -0
- package/core/mapping/auto-mapping-class-context.js +18 -0
- package/core/mapping/auto-mapping-context.d.ts +11 -0
- package/core/mapping/auto-mapping-context.js +24 -0
- package/core/mapping/auto-mapping-list.d.ts +27 -0
- package/core/mapping/auto-mapping-list.js +94 -0
- package/core/mapping/auto-mapping-profile.d.ts +3 -0
- package/core/mapping/auto-mapping-profile.js +6 -0
- package/core/mapping/auto-mapping.decorator.d.ts +9 -0
- package/core/mapping/auto-mapping.decorator.js +27 -0
- package/core/mapping/auto-mapping.module.d.ts +5 -0
- package/core/mapping/auto-mapping.module.js +29 -0
- package/core/mapping/auto-mapping.service.d.ts +14 -0
- package/core/mapping/auto-mapping.service.js +140 -0
- package/core/mapping/create-map.d.ts +3 -0
- package/core/mapping/create-map.js +7 -0
- package/core/mapping/for-member.d.ts +5 -0
- package/core/mapping/for-member.js +8 -0
- package/core/request-overflow/request-handler.base.d.ts +4 -0
- package/core/request-overflow/request-handler.base.js +6 -0
- package/core/request-overflow/request-result.d.ts +15 -0
- package/core/request-overflow/request-result.js +37 -0
- package/core/request-overflow/request-validator.base.d.ts +7 -0
- package/core/request-overflow/request-validator.base.js +26 -0
- package/core/security/strategies/api-key.strategy.d.ts +16 -0
- package/core/security/strategies/api-key.strategy.js +31 -0
- package/core/utils/assing-object.d.ts +5 -0
- package/core/utils/assing-object.js +6 -0
- package/core/utils/env.config.d.ts +6 -0
- package/core/utils/env.config.js +18 -0
- package/core/utils/filter-request-params.d.ts +13 -0
- package/core/utils/filter-request-params.js +22 -0
- package/core/utils/find-on-list.d.ts +2 -0
- package/core/utils/find-on-list.js +13 -0
- package/core/utils/get-type-by-prop.d.ts +2 -0
- package/core/utils/get-type-by-prop.js +11 -0
- package/core/utils/instanciate-class-with-dependencies-injection.d.ts +2 -0
- package/core/utils/instanciate-class-with-dependencies-injection.js +10 -0
- package/core/utils/interfaces/icomparable.d.ts +5 -0
- package/core/utils/interfaces/icomparable.js +6 -0
- package/core/utils/list.d.ts +39 -0
- package/core/utils/list.js +168 -0
- package/core/utils/promise-all.d.ts +7 -0
- package/core/utils/promise-all.js +19 -0
- package/core/utils/set-mask-document-number.d.ts +1 -0
- package/core/utils/set-mask-document-number.js +13 -0
- package/core/validators/file-validator.d.ts +27 -0
- package/core/validators/file-validator.js +94 -0
- package/decorators/api-exclude-endpoint-diff-develop.decorator.d.ts +1 -0
- package/decorators/api-exclude-endpoint-diff-develop.decorator.js +9 -0
- package/decorators/api-property-enum.decorator.d.ts +8 -0
- package/decorators/api-property-enum.decorator.js +21 -0
- package/decorators/api-property-only-develop.decorator.d.ts +2 -0
- package/decorators/api-property-only-develop.decorator.js +9 -0
- package/decorators/cookies.decorator.d.ts +1 -0
- package/decorators/cookies.decorator.js +8 -0
- package/decorators/is-public.decorator.d.ts +2 -0
- package/decorators/is-public.decorator.js +7 -0
- package/decorators/upload.decorator.d.ts +1 -0
- package/decorators/upload.decorator.js +18 -0
- package/env/env.d.ts +25 -0
- package/env/env.js +14 -0
- package/env/env.module.d.ts +2 -0
- package/env/env.module.js +20 -0
- package/env/env.service.d.ts +7 -0
- package/env/env.service.js +28 -0
- package/filters/domain-errors.filter.d.ts +18 -0
- package/filters/domain-errors.filter.js +92 -0
- package/filters/global-exception.filter.d.ts +8 -0
- package/filters/global-exception.filter.js +68 -0
- package/filters/prisma-validation-exception.filter.d.ts +10 -0
- package/filters/prisma-validation-exception.filter.js +82 -0
- package/filters/zod-errors.filter.d.ts +9 -0
- package/filters/zod-errors.filter.js +60 -0
- package/package.json +4 -1
- package/services/logging/ilogging.service.d.ts +16 -0
- package/services/logging/ilogging.service.js +6 -0
- package/services/logging/logging.service.d.ts +4 -0
- package/services/logging/logging.service.js +20 -0
- package/services/redis/iredis.service.d.ts +6 -0
- package/services/redis/iredis.service.js +6 -0
- package/services/redis/redis.service.d.ts +14 -0
- package/services/redis/redis.service.js +65 -0
- package/services/redlock/ired-lock.service.d.ts +4 -0
- package/services/redlock/ired-lock.service.js +6 -0
- package/services/redlock/red-lock.service.d.ts +9 -0
- package/services/redlock/red-lock.service.js +46 -0
- package/test/koala-app-test-dependencies.d.ts +10 -0
- package/test/koala-app-test-dependencies.js +13 -0
- package/test/koala-app-test.d.ts +22 -0
- package/test/koala-app-test.js +77 -0
- package/test/repositories/in-memory-base.repository.d.ts +17 -0
- package/test/repositories/in-memory-base.repository.js +65 -0
- package/test/services/fake-logging.service.d.ts +4 -0
- package/test/services/fake-logging.service.js +9 -0
- package/test/services/fake-red-lock.service.d.ts +5 -0
- package/test/services/fake-red-lock.service.js +11 -0
- package/test/utils/create-e2e-database.d.ts +2 -0
- package/test/utils/create-e2e-database.js +47 -0
- package/test/utils/drop-e2e-database.d.ts +2 -0
- package/test/utils/drop-e2e-database.js +33 -0
- package/test/utils/wait-for.d.ts +1 -0
- package/test/utils/wait-for.js +21 -0
- package/tsconfig.lib.tsbuildinfo +1 -0
- package/CHANGELOG.md +0 -21
- package/src/core/backgroud-services/cron-service/cron-job.handler.base.ts +0 -66
- package/src/core/backgroud-services/cron-service/cron-job.handler.spec.ts +0 -38
- package/src/core/backgroud-services/event-service/event-class.ts +0 -5
- package/src/core/backgroud-services/event-service/event-handler.base.ts +0 -17
- package/src/core/backgroud-services/event-service/event-is-trigger.ts +0 -3
- package/src/core/backgroud-services/event-service/event-job.ts +0 -28
- package/src/core/backgroud-services/event-service/event-queue.spec.ts +0 -47
- package/src/core/backgroud-services/event-service/event-queue.ts +0 -107
- package/src/core/constants/query-params.ts +0 -7
- package/src/core/controllers/base.controller.ts +0 -9
- package/src/core/controllers/controller.decorator.ts +0 -10
- package/src/core/controllers/created-registre-response.base.ts +0 -17
- package/src/core/controllers/list-response.base.ts +0 -8
- package/src/core/controllers/pagination.request.ts +0 -41
- package/src/core/controllers/router-config.base.ts +0 -14
- package/src/core/controllers/schemas/boolean.schema.ts +0 -10
- package/src/core/controllers/schemas/document-number.schema.ts +0 -23
- package/src/core/controllers/schemas/email.schema.ts +0 -13
- package/src/core/controllers/schemas/list-query.schema.ts +0 -17
- package/src/core/controllers/schemas/native-enum.schema.ts +0 -34
- package/src/core/controllers/schemas/set-mask-document-number.schema.ts +0 -13
- package/src/core/database/entity.base.ts +0 -95
- package/src/core/database/entity.decorator.spec.ts +0 -71
- package/src/core/database/entity.decorator.ts +0 -39
- package/src/core/database/prisma-client-with-custom-transaction.interface.ts +0 -13
- package/src/core/database/prisma-resolver.ts +0 -99
- package/src/core/database/prisma-transactional-client.ts +0 -43
- package/src/core/database/prisma.service.ts +0 -136
- package/src/core/database/repository.base.ts +0 -548
- package/src/core/dtos/pagination.dto.ts +0 -35
- package/src/core/errors/bad-request.error.ts +0 -8
- package/src/core/errors/conflict.error.ts +0 -7
- package/src/core/errors/error.base.ts +0 -5
- package/src/core/errors/no-content.error.ts +0 -8
- package/src/core/errors/not-allowed.error.ts +0 -8
- package/src/core/errors/resource-not-found.error.ts +0 -8
- package/src/core/errors/user-already-exist.error.ts +0 -7
- package/src/core/errors/wrong-credentials.error.ts +0 -7
- package/src/core/health-check/health-check.controller.ts +0 -13
- package/src/core/health-check/health-check.module.ts +0 -7
- package/src/core/index.ts +0 -56
- package/src/core/koala-app.ts +0 -379
- package/src/core/koala-global-vars.ts +0 -8
- package/src/core/koala-nest-database.module.ts +0 -65
- package/src/core/koala-nest-http.module.ts +0 -44
- package/src/core/koala-nest.module.ts +0 -67
- package/src/core/mapping/auto-mapping-class-context.ts +0 -28
- package/src/core/mapping/auto-mapping-context.ts +0 -26
- package/src/core/mapping/auto-mapping-list.ts +0 -154
- package/src/core/mapping/auto-mapping-profile.ts +0 -3
- package/src/core/mapping/auto-mapping.decorator.ts +0 -54
- package/src/core/mapping/auto-mapping.module.ts +0 -17
- package/src/core/mapping/auto-mapping.service.ts +0 -187
- package/src/core/mapping/create-map.ts +0 -11
- package/src/core/mapping/for-member.ts +0 -16
- package/src/core/request-overflow/request-handler.base.ts +0 -8
- package/src/core/request-overflow/request-result.spec.ts +0 -23
- package/src/core/request-overflow/request-result.ts +0 -41
- package/src/core/request-overflow/request-validator.base.ts +0 -33
- package/src/core/security/strategies/api-key.strategy.ts +0 -45
- package/src/core/utils/assing-object.ts +0 -9
- package/src/core/utils/env.config.ts +0 -17
- package/src/core/utils/filter-request-params.ts +0 -23
- package/src/core/utils/find-on-list.ts +0 -18
- package/src/core/utils/get-type-by-prop.ts +0 -9
- package/src/core/utils/instanciate-class-with-dependencies-injection.ts +0 -12
- package/src/core/utils/interfaces/icomparable.ts +0 -6
- package/src/core/utils/list.spec.ts +0 -81
- package/src/core/utils/list.ts +0 -223
- package/src/core/utils/promise-all.ts +0 -24
- package/src/core/utils/set-mask-document-number.ts +0 -13
- package/src/core/validators/file-validator.ts +0 -113
- package/src/decorators/api-exclude-endpoint-diff-develop.decorator.ts +0 -15
- package/src/decorators/api-property-enum.decorator.ts +0 -58
- package/src/decorators/api-property-only-develop.decorator.ts +0 -6
- package/src/decorators/cookies.decorator.ts +0 -8
- package/src/decorators/is-public.decorator.ts +0 -5
- package/src/decorators/upload.decorator.ts +0 -31
- package/src/env/env.module.ts +0 -8
- package/src/env/env.service.ts +0 -12
- package/src/env/env.ts +0 -14
- package/src/filters/domain-errors.filter.ts +0 -97
- package/src/filters/global-exception.filter.ts +0 -60
- package/src/filters/prisma-validation-exception.filter.ts +0 -73
- package/src/filters/zod-errors.filter.ts +0 -48
- package/src/services/logging/ilogging.service.ts +0 -17
- package/src/services/logging/logging.service.ts +0 -10
- package/src/services/redis/iredis.service.ts +0 -11
- package/src/services/redis/redis.service.ts +0 -70
- package/src/services/redlock/ired-lock.service.ts +0 -4
- package/src/services/redlock/red-lock.service.ts +0 -36
- package/src/test/koala-app-test-dependencies.ts +0 -15
- package/src/test/koala-app-test.ts +0 -103
- package/src/test/repositories/in-memory-base.repository.ts +0 -90
- package/src/test/services/fake-logging.service.ts +0 -7
- package/src/test/services/fake-red-lock.service.ts +0 -11
- package/src/test/utils/create-e2e-database.ts +0 -55
- package/src/test/utils/drop-e2e-database.ts +0 -36
- package/src/test/utils/wait-for.ts +0 -31
- package/tsconfig.lib.json +0 -11
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileTypeValidator = exports.FileSizeValidator = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const runFileValidation = async (args) => {
|
|
6
|
+
if (args.multiple) {
|
|
7
|
+
const fileFields = Object.keys(args.file);
|
|
8
|
+
for (const field of fileFields) {
|
|
9
|
+
const fieldFile = args.file[field];
|
|
10
|
+
if (Array.isArray(fieldFile)) {
|
|
11
|
+
for (const f of fieldFile) {
|
|
12
|
+
if (!args.validator(f)) {
|
|
13
|
+
return { errorFileName: f.originalname, isValid: false };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
if (!args.validator(fieldFile)) {
|
|
19
|
+
return { errorFileName: fieldFile.originalname, isValid: false };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return { isValid: true };
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(args.file)) {
|
|
26
|
+
for (const f of args.file) {
|
|
27
|
+
if (!args.validator(f)) {
|
|
28
|
+
return { errorFileName: f.originalname, isValid: false };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { isValid: true };
|
|
32
|
+
}
|
|
33
|
+
if (args.validator(args.file)) {
|
|
34
|
+
return { errorFileName: args.file.originalname, isValid: false };
|
|
35
|
+
}
|
|
36
|
+
return { isValid: true };
|
|
37
|
+
};
|
|
38
|
+
class FileSizeValidator extends common_1.FileValidator {
|
|
39
|
+
maxSizeBytes;
|
|
40
|
+
multiple;
|
|
41
|
+
errorFileName;
|
|
42
|
+
constructor(args) {
|
|
43
|
+
super({});
|
|
44
|
+
this.maxSizeBytes = args.maxSizeBytes;
|
|
45
|
+
this.multiple = args.multiple;
|
|
46
|
+
}
|
|
47
|
+
async isValid(file) {
|
|
48
|
+
if (!file) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
const result = await runFileValidation({
|
|
52
|
+
file,
|
|
53
|
+
multiple: this.multiple,
|
|
54
|
+
validator: (f) => f.size < this.maxSizeBytes,
|
|
55
|
+
});
|
|
56
|
+
this.errorFileName = result.errorFileName ?? '';
|
|
57
|
+
return result.isValid;
|
|
58
|
+
}
|
|
59
|
+
buildErrorMessage(file) {
|
|
60
|
+
return (`file ${this.errorFileName || ''} exceeded the size limit ` +
|
|
61
|
+
parseFloat((this.maxSizeBytes / 1024 / 1024).toFixed(2)) +
|
|
62
|
+
'MB');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.FileSizeValidator = FileSizeValidator;
|
|
66
|
+
class FileTypeValidator extends common_1.FileValidator {
|
|
67
|
+
multiple;
|
|
68
|
+
errorFileName;
|
|
69
|
+
filetype;
|
|
70
|
+
constructor(args) {
|
|
71
|
+
super({});
|
|
72
|
+
this.multiple = args.multiple;
|
|
73
|
+
this.filetype = args.filetype;
|
|
74
|
+
}
|
|
75
|
+
isMimeTypeValid(file) {
|
|
76
|
+
return file.mimetype.search(this.filetype) === 0;
|
|
77
|
+
}
|
|
78
|
+
async isValid(file) {
|
|
79
|
+
if (!file) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
const result = await runFileValidation({
|
|
83
|
+
multiple: this.multiple,
|
|
84
|
+
file,
|
|
85
|
+
validator: (f) => this.isMimeTypeValid(f),
|
|
86
|
+
});
|
|
87
|
+
this.errorFileName = result.errorFileName ?? '';
|
|
88
|
+
return result.isValid;
|
|
89
|
+
}
|
|
90
|
+
buildErrorMessage(file) {
|
|
91
|
+
return `file ${this.errorFileName || ''} must be of type ${this.filetype}`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.FileTypeValidator = FileTypeValidator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ApiExcludeEndpointDiffDevelop: () => MethodDecorator;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiExcludeEndpointDiffDevelop = void 0;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
6
|
+
const ApiExcludeEndpointDiffDevelop = () => {
|
|
7
|
+
return (0, swagger_1.ApiExcludeEndpoint)(!env_config_1.EnvConfig.isEnvDevelop);
|
|
8
|
+
};
|
|
9
|
+
exports.ApiExcludeEndpointDiffDevelop = ApiExcludeEndpointDiffDevelop;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EnumAllowedTypes } from '@nestjs/swagger/dist/interfaces/schema-object-metadata.interface';
|
|
2
|
+
interface ApiPropertyEnumOptions {
|
|
3
|
+
enum: EnumAllowedTypes;
|
|
4
|
+
isArray?: boolean;
|
|
5
|
+
required?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function ApiPropertyEnum(options: ApiPropertyEnumOptions): (target: any, propertyKey: string) => void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiPropertyEnum = ApiPropertyEnum;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
function ApiPropertyEnum(options) {
|
|
6
|
+
return function (target, propertyKey) {
|
|
7
|
+
const enumValues = Object.values(options.enum)
|
|
8
|
+
.filter((value) => typeof value === 'number')
|
|
9
|
+
.map((value) => ({
|
|
10
|
+
value,
|
|
11
|
+
description: options.enum[value],
|
|
12
|
+
}));
|
|
13
|
+
const description = enumValues
|
|
14
|
+
.map((enumValue) => `${enumValue.description}: ${enumValue.value}`)
|
|
15
|
+
.join('\n');
|
|
16
|
+
(0, swagger_1.ApiProperty)({
|
|
17
|
+
...options,
|
|
18
|
+
description: ['```', description, '```'].join('\n'),
|
|
19
|
+
})(target, propertyKey);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiPropertyOnlyDevelop = void 0;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
6
|
+
const ApiPropertyOnlyDevelop = (propertyOptions) => {
|
|
7
|
+
return env_config_1.EnvConfig.isEnvDevelop ? (0, swagger_1.ApiProperty)(propertyOptions) : () => { };
|
|
8
|
+
};
|
|
9
|
+
exports.ApiPropertyOnlyDevelop = ApiPropertyOnlyDevelop;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Cookies: (...dataOrPipes: (string | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Cookies = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.Cookies = (0, common_1.createParamDecorator)((data, ctx) => {
|
|
6
|
+
const request = ctx.switchToHttp().getRequest();
|
|
7
|
+
return data ? request.cookies?.[data] : request.cookies;
|
|
8
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IsPublic = exports.IS_PUBLIC_KEY = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.IS_PUBLIC_KEY = 'isPublic';
|
|
6
|
+
const IsPublic = () => (0, common_1.SetMetadata)(exports.IS_PUBLIC_KEY, true);
|
|
7
|
+
exports.IsPublic = IsPublic;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function UploadDecorator(maxSizeInKb: number, filetype: RegExp): ParameterDecorator;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UploadDecorator = UploadDecorator;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const file_validator_1 = require("../core/validators/file-validator");
|
|
6
|
+
function UploadDecorator(maxSizeInKb, filetype) {
|
|
7
|
+
const maxSizeBytes = maxSizeInKb * 1024;
|
|
8
|
+
return (0, common_1.UploadedFiles)(new common_1.ParseFilePipe({
|
|
9
|
+
validators: [
|
|
10
|
+
new file_validator_1.FileSizeValidator({ maxSizeBytes, multiple: true }),
|
|
11
|
+
new file_validator_1.FileTypeValidator({
|
|
12
|
+
filetype,
|
|
13
|
+
multiple: true,
|
|
14
|
+
}),
|
|
15
|
+
],
|
|
16
|
+
fileIsRequired: false,
|
|
17
|
+
}));
|
|
18
|
+
}
|
package/env/env.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const envSchema: z.ZodObject<{
|
|
4
|
+
PORT: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
NODE_ENV: z.ZodEnum<["test", "develop", "staging", "production"]>;
|
|
6
|
+
PRISMA_QUERY_LOG: z.ZodOptional<z.ZodEffects<z.ZodString, boolean | undefined, string>>;
|
|
7
|
+
SWAGGER_USERNAME: z.ZodOptional<z.ZodString>;
|
|
8
|
+
SWAGGER_PASSWORD: z.ZodOptional<z.ZodString>;
|
|
9
|
+
REDIS_CONNECTION_STRING: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
PORT: number;
|
|
12
|
+
NODE_ENV: "test" | "develop" | "staging" | "production";
|
|
13
|
+
PRISMA_QUERY_LOG?: boolean | undefined;
|
|
14
|
+
SWAGGER_USERNAME?: string | undefined;
|
|
15
|
+
SWAGGER_PASSWORD?: string | undefined;
|
|
16
|
+
REDIS_CONNECTION_STRING?: string | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
NODE_ENV: "test" | "develop" | "staging" | "production";
|
|
19
|
+
PORT?: number | undefined;
|
|
20
|
+
PRISMA_QUERY_LOG?: string | undefined;
|
|
21
|
+
SWAGGER_USERNAME?: string | undefined;
|
|
22
|
+
SWAGGER_PASSWORD?: string | undefined;
|
|
23
|
+
REDIS_CONNECTION_STRING?: string | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export type Env = z.infer<typeof envSchema>;
|
package/env/env.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.envSchema = void 0;
|
|
4
|
+
require("dotenv/config");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const boolean_schema_1 = require("../core/controllers/schemas/boolean.schema");
|
|
7
|
+
exports.envSchema = zod_1.z.object({
|
|
8
|
+
PORT: zod_1.z.coerce.number().default(3000),
|
|
9
|
+
NODE_ENV: zod_1.z.enum(['test', 'develop', 'staging', 'production']),
|
|
10
|
+
PRISMA_QUERY_LOG: (0, boolean_schema_1.booleanSchema)().optional(),
|
|
11
|
+
SWAGGER_USERNAME: zod_1.z.string().optional(),
|
|
12
|
+
SWAGGER_PASSWORD: zod_1.z.string().optional(),
|
|
13
|
+
REDIS_CONNECTION_STRING: zod_1.z.string().optional(),
|
|
14
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.EnvModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const env_service_1 = require("./env.service");
|
|
12
|
+
let EnvModule = class EnvModule {
|
|
13
|
+
};
|
|
14
|
+
exports.EnvModule = EnvModule;
|
|
15
|
+
exports.EnvModule = EnvModule = __decorate([
|
|
16
|
+
(0, common_1.Module)({
|
|
17
|
+
providers: [env_service_1.EnvService],
|
|
18
|
+
exports: [env_service_1.EnvService],
|
|
19
|
+
})
|
|
20
|
+
], EnvModule);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
import { Env } from './env';
|
|
3
|
+
export declare class EnvService<TEnv extends Env = Env> {
|
|
4
|
+
private readonly configService;
|
|
5
|
+
constructor(configService: ConfigService<TEnv, true>);
|
|
6
|
+
get<T extends keyof TEnv>(key: T): (string extends infer T_1 ? T_1 extends string ? T_1 extends keyof TEnv ? string extends infer T_2 ? T_2 extends string ? T_2 extends import("@nestjs/config").Path<TEnv[T_1]> ? import("@nestjs/config").PathValue<TEnv[T_1], T_2> : never : never : never : never : never : never) | (any extends infer T_3 ? T_3 extends any ? T_3 extends keyof TEnv ? TEnv[T_3] : never : never : never);
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
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.EnvService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const config_1 = require("@nestjs/config");
|
|
15
|
+
let EnvService = class EnvService {
|
|
16
|
+
configService;
|
|
17
|
+
constructor(configService) {
|
|
18
|
+
this.configService = configService;
|
|
19
|
+
}
|
|
20
|
+
get(key) {
|
|
21
|
+
return this.configService.get(key, { infer: true });
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.EnvService = EnvService;
|
|
25
|
+
exports.EnvService = EnvService = __decorate([
|
|
26
|
+
(0, common_1.Injectable)(),
|
|
27
|
+
__metadata("design:paramtypes", [config_1.ConfigService])
|
|
28
|
+
], EnvService);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
import { BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
+
import { BadRequestError } from '../core/errors/bad-request.error';
|
|
4
|
+
import { ConflictError } from '../core/errors/conflict.error';
|
|
5
|
+
import { NoContentError } from '../core/errors/no-content.error';
|
|
6
|
+
import { NotAllowedError } from '../core/errors/not-allowed.error';
|
|
7
|
+
import { ResourceNotFoundError } from '../core/errors/resource-not-found.error';
|
|
8
|
+
import { UserAlreadyExist } from '../core/errors/user-already-exist.error';
|
|
9
|
+
import { WrongCredentialsError } from '../core/errors/wrong-credentials.error';
|
|
10
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
11
|
+
type DomainErrors = NotAllowedError | ResourceNotFoundError | UserAlreadyExist | WrongCredentialsError | ConflictError | BadRequestError | NoContentError;
|
|
12
|
+
export declare class DomainErrorsFilter extends BaseExceptionFilter {
|
|
13
|
+
private readonly loggingService;
|
|
14
|
+
constructor(loggingService: ILoggingService);
|
|
15
|
+
catch(exception: DomainErrors, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
16
|
+
private map;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
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.DomainErrorsFilter = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const bad_request_error_1 = require("../core/errors/bad-request.error");
|
|
16
|
+
const conflict_error_1 = require("../core/errors/conflict.error");
|
|
17
|
+
const no_content_error_1 = require("../core/errors/no-content.error");
|
|
18
|
+
const not_allowed_error_1 = require("../core/errors/not-allowed.error");
|
|
19
|
+
const resource_not_found_error_1 = require("../core/errors/resource-not-found.error");
|
|
20
|
+
const user_already_exist_error_1 = require("../core/errors/user-already-exist.error");
|
|
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");
|
|
24
|
+
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
25
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
26
|
+
let DomainErrorsFilter = class DomainErrorsFilter extends core_1.BaseExceptionFilter {
|
|
27
|
+
loggingService;
|
|
28
|
+
constructor(loggingService) {
|
|
29
|
+
super();
|
|
30
|
+
this.loggingService = loggingService;
|
|
31
|
+
}
|
|
32
|
+
catch(exception, host) {
|
|
33
|
+
const mappedException = this.map(exception);
|
|
34
|
+
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
35
|
+
if (mappedException.statusCode !== common_1.HttpStatus.UNAUTHORIZED) {
|
|
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
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return filterRequestParams.response
|
|
55
|
+
.status(mappedException.statusCode)
|
|
56
|
+
.json(mappedException);
|
|
57
|
+
}
|
|
58
|
+
map(exception) {
|
|
59
|
+
const mappedException = {
|
|
60
|
+
statusCode: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
61
|
+
message: exception.message,
|
|
62
|
+
data: exception.data,
|
|
63
|
+
};
|
|
64
|
+
switch (exception.constructor) {
|
|
65
|
+
case user_already_exist_error_1.UserAlreadyExist:
|
|
66
|
+
case not_allowed_error_1.NotAllowedError:
|
|
67
|
+
case bad_request_error_1.BadRequestError:
|
|
68
|
+
mappedException.statusCode = common_1.HttpStatus.BAD_REQUEST;
|
|
69
|
+
break;
|
|
70
|
+
case resource_not_found_error_1.ResourceNotFoundError:
|
|
71
|
+
mappedException.statusCode = common_1.HttpStatus.NOT_FOUND;
|
|
72
|
+
break;
|
|
73
|
+
case wrong_credentials_error_1.WrongCredentialsError:
|
|
74
|
+
mappedException.statusCode = common_1.HttpStatus.UNAUTHORIZED;
|
|
75
|
+
break;
|
|
76
|
+
case conflict_error_1.ConflictError:
|
|
77
|
+
mappedException.statusCode = common_1.HttpStatus.CONFLICT;
|
|
78
|
+
break;
|
|
79
|
+
case no_content_error_1.NoContentError:
|
|
80
|
+
mappedException.statusCode = common_1.HttpStatus.NO_CONTENT;
|
|
81
|
+
break;
|
|
82
|
+
default:
|
|
83
|
+
console.error(exception);
|
|
84
|
+
}
|
|
85
|
+
return mappedException;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
exports.DomainErrorsFilter = DomainErrorsFilter;
|
|
89
|
+
exports.DomainErrorsFilter = DomainErrorsFilter = __decorate([
|
|
90
|
+
(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),
|
|
91
|
+
__metadata("design:paramtypes", [ilogging_service_1.ILoggingService])
|
|
92
|
+
], DomainErrorsFilter);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
import { BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
4
|
+
export declare class GlobalExceptionsFilter extends BaseExceptionFilter {
|
|
5
|
+
private readonly loggingService;
|
|
6
|
+
constructor(loggingService: ILoggingService);
|
|
7
|
+
catch(exception: Error, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
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.GlobalExceptionsFilter = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const node_http_1 = require("node:http");
|
|
16
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
17
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
18
|
+
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
19
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
20
|
+
let GlobalExceptionsFilter = class GlobalExceptionsFilter extends core_1.BaseExceptionFilter {
|
|
21
|
+
loggingService;
|
|
22
|
+
constructor(loggingService) {
|
|
23
|
+
super();
|
|
24
|
+
this.loggingService = loggingService;
|
|
25
|
+
}
|
|
26
|
+
catch(exception, host) {
|
|
27
|
+
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
28
|
+
const request = host.getArgs().find((arg) => arg instanceof node_http_1.IncomingMessage) ?? null;
|
|
29
|
+
const statusCode = exception instanceof common_1.HttpException
|
|
30
|
+
? exception.getStatus()
|
|
31
|
+
: common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
32
|
+
const responseBody = exception instanceof common_1.HttpException
|
|
33
|
+
? exception.getResponse()
|
|
34
|
+
: {
|
|
35
|
+
statusCode,
|
|
36
|
+
timestamp: new Date().toISOString(),
|
|
37
|
+
path: filterRequestParams.filterParams.endpoint,
|
|
38
|
+
};
|
|
39
|
+
if (!exception.message?.includes('Cannot GET /socket.io') &&
|
|
40
|
+
!exception.message?.includes('Cannot GET /favicon.ico') &&
|
|
41
|
+
!['/'].includes(request?.url ?? '') &&
|
|
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
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return filterRequestParams.response.status(statusCode).json(responseBody);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.GlobalExceptionsFilter = GlobalExceptionsFilter;
|
|
65
|
+
exports.GlobalExceptionsFilter = GlobalExceptionsFilter = __decorate([
|
|
66
|
+
(0, common_1.Catch)(),
|
|
67
|
+
__metadata("design:paramtypes", [ilogging_service_1.ILoggingService])
|
|
68
|
+
], GlobalExceptionsFilter);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
import { BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
+
import { Prisma } from 'prisma/generated/client';
|
|
4
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
5
|
+
export declare class PrismaValidationExceptionFilter extends BaseExceptionFilter {
|
|
6
|
+
private readonly loggingService;
|
|
7
|
+
constructor(loggingService: ILoggingService);
|
|
8
|
+
catch(exception: Prisma.PrismaClientKnownRequestError, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
9
|
+
private translate;
|
|
10
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
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.PrismaValidationExceptionFilter = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const client_1 = require("../../../../prisma/generated/client");
|
|
16
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
17
|
+
const env_config_1 = require("../core/utils/env.config");
|
|
18
|
+
const filter_request_params_1 = require("../core/utils/filter-request-params");
|
|
19
|
+
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
20
|
+
let PrismaValidationExceptionFilter = class PrismaValidationExceptionFilter extends core_1.BaseExceptionFilter {
|
|
21
|
+
loggingService;
|
|
22
|
+
constructor(loggingService) {
|
|
23
|
+
super();
|
|
24
|
+
this.loggingService = loggingService;
|
|
25
|
+
}
|
|
26
|
+
catch(exception, host) {
|
|
27
|
+
const translatedResponse = this.translate(exception);
|
|
28
|
+
const filterRequestParams = filter_request_params_1.FilterRequestParams.get(host);
|
|
29
|
+
if (translatedResponse.statusCode !== common_1.HttpStatus.UNAUTHORIZED) {
|
|
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
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return filterRequestParams.response
|
|
49
|
+
.status(translatedResponse.statusCode)
|
|
50
|
+
.json(translatedResponse);
|
|
51
|
+
}
|
|
52
|
+
translate(exception) {
|
|
53
|
+
switch (exception.code) {
|
|
54
|
+
case 'P2002':
|
|
55
|
+
return {
|
|
56
|
+
statusCode: common_1.HttpStatus.CONFLICT,
|
|
57
|
+
message: 'Registro já existente.',
|
|
58
|
+
};
|
|
59
|
+
case 'P2003':
|
|
60
|
+
return {
|
|
61
|
+
statusCode: common_1.HttpStatus.BAD_REQUEST,
|
|
62
|
+
message: 'Falha devido a relacionamento. Verifique se o relacionamento existe ou é valido.',
|
|
63
|
+
};
|
|
64
|
+
case 'P2025':
|
|
65
|
+
return {
|
|
66
|
+
statusCode: common_1.HttpStatus.NOT_FOUND,
|
|
67
|
+
message: 'Registro não encontrado.',
|
|
68
|
+
};
|
|
69
|
+
default:
|
|
70
|
+
console.error(exception);
|
|
71
|
+
return {
|
|
72
|
+
statusCode: common_1.HttpStatus.BAD_REQUEST,
|
|
73
|
+
message: 'Ocorreu um erro desconhecido relacionado aos dados enviados.',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
exports.PrismaValidationExceptionFilter = PrismaValidationExceptionFilter;
|
|
79
|
+
exports.PrismaValidationExceptionFilter = PrismaValidationExceptionFilter = __decorate([
|
|
80
|
+
(0, common_1.Catch)(client_1.Prisma.PrismaClientKnownRequestError),
|
|
81
|
+
__metadata("design:paramtypes", [ilogging_service_1.ILoggingService])
|
|
82
|
+
], PrismaValidationExceptionFilter);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
import { BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
+
import { ZodError } from 'zod';
|
|
4
|
+
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
5
|
+
export declare class ZodErrorsFilter extends BaseExceptionFilter {
|
|
6
|
+
private readonly loggingService;
|
|
7
|
+
constructor(loggingService: ILoggingService);
|
|
8
|
+
catch(exception: ZodError, host: ArgumentsHost): import("express").Response<any, Record<string, any>>;
|
|
9
|
+
}
|