@klerick/json-api-nestjs-microorm 0.1.0-beta.6 → 0.1.0-beta.7

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/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 0.1.0-beta.7 (2025-06-23)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **json-api-nestjs-microorm:** add format for mikroorm error ([c1cafc2](https://github.com/klerick/nestjs-json-api/commit/c1cafc2))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Alex H
10
+
1
11
  ## 0.1.0-beta.6 (2025-06-10)
2
12
 
3
13
  ### 🩹 Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@klerick/json-api-nestjs-microorm",
3
- "version": "0.1.0-beta.6",
3
+ "version": "0.1.0-beta.7",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -4,7 +4,7 @@ exports.MicroOrmJsonApiModule = void 0;
4
4
  const nestjs_1 = require("@mikro-orm/nestjs");
5
5
  const json_api_nestjs_1 = require("@klerick/json-api-nestjs");
6
6
  const factory_1 = require("./factory");
7
- const micro_orm_util_service_1 = require("./service/micro-orm-util.service");
7
+ const service_1 = require("./service");
8
8
  class MicroOrmJsonApiModule {
9
9
  static forRoot(options) {
10
10
  const optionProvider = {
@@ -20,6 +20,10 @@ class MicroOrmJsonApiModule {
20
20
  (0, factory_1.CurrentEntityMetadata)(),
21
21
  (0, factory_1.RunInTransactionFactory)(),
22
22
  (0, factory_1.EntityPropsMap)(options.entities),
23
+ {
24
+ provide: json_api_nestjs_1.ErrorFormatService,
25
+ useClass: service_1.MikroOrmFormatErrorService,
26
+ },
23
27
  ];
24
28
  const currentImport = [
25
29
  microOrmModule,
@@ -37,7 +41,7 @@ class MicroOrmJsonApiModule {
37
41
  (0, factory_1.CurrentEntityRepository)(entity),
38
42
  (0, factory_1.CheckRelationNameFactory)(),
39
43
  (0, factory_1.OrmServiceFactory)(),
40
- micro_orm_util_service_1.MicroOrmUtilService,
44
+ service_1.MicroOrmUtilService,
41
45
  (0, factory_1.FindOneRowEntityFactory)(),
42
46
  ];
43
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"micro-orm-json-api.module.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/micro-orm-json-api.module.ts"],"names":[],"mappings":";;;AACA,8CAAmD;AACnD,8DAIkC;AAGlC,uCAUmB;AACnB,6EAAuE;AAEvE,MAAa,qBAAqB;IAChC,MAAM,CAAC,OAAO,CAAC,OAAqC;QAClD,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,sCAAoB;YAC7B,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,cAAc,GAAG,uBAAc,CAAC,UAAU,CAC9C,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,cAAc,CACvB,CAAC;QAEF,MAAM,eAAe,GAAG;YACtB,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;YAC5B,cAAc;YACd,IAAA,iCAAuB,EAAC,OAAO,CAAC,cAAc,CAAC;YAC/C,IAAA,8BAAoB,GAAE;YACtB,IAAA,+BAAqB,GAAE;YACvB,IAAA,iCAAuB,GAAE;YACzB,IAAA,wBAAc,EAAC,OAAO,CAAC,QAAQ,CAAC;SACjC,CAAC;QAEF,MAAM,aAAa,GAAG;YACpB,cAAc;YACd,GAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAqB;SAChD,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,eAAe;YAC1B,OAAO,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACpC,OAAO;YACL,IAAA,iCAAuB,EAAC,MAAM,CAAC;YAC/B,IAAA,kCAAwB,GAAE;YAC1B,IAAA,2BAAiB,GAAE;YACnB,4CAAmB;YACnB,IAAA,iCAAuB,GAAE;SAC1B,CAAC;IACJ,CAAC;CACF;AA5CD,sDA4CC"}
1
+ {"version":3,"file":"micro-orm-json-api.module.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/micro-orm-json-api.module.ts"],"names":[],"mappings":";;;AACA,8CAAmD;AACnD,8DAKkC;AAGlC,uCAUmB;AACnB,uCAA4E;AAE5E,MAAa,qBAAqB;IAChC,MAAM,CAAC,OAAO,CAAC,OAAqC;QAClD,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,sCAAoB;YAC7B,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,cAAc,GAAG,uBAAc,CAAC,UAAU,CAC9C,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,cAAc,CACvB,CAAC;QAEF,MAAM,eAAe,GAAG;YACtB,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;YAC5B,cAAc;YACd,IAAA,iCAAuB,EAAC,OAAO,CAAC,cAAc,CAAC;YAC/C,IAAA,8BAAoB,GAAE;YACtB,IAAA,+BAAqB,GAAE;YACvB,IAAA,iCAAuB,GAAE;YACzB,IAAA,wBAAc,EAAC,OAAO,CAAC,QAAQ,CAAC;YAChC;gBACE,OAAO,EAAE,oCAAkB;gBAC3B,QAAQ,EAAE,oCAA0B;aACrC;SACF,CAAC;QAEF,MAAM,aAAa,GAAG;YACpB,cAAc;YACd,GAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAqB;SAChD,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,eAAe;YAC1B,OAAO,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACpC,OAAO;YACL,IAAA,iCAAuB,EAAC,MAAM,CAAC;YAC/B,IAAA,kCAAwB,GAAE;YAC1B,IAAA,2BAAiB,GAAE;YACnB,6BAAmB;YACnB,IAAA,iCAAuB,GAAE;SAC1B,CAAC;IACJ,CAAC;CACF;AAhDD,sDAgDC"}
@@ -1 +1,3 @@
1
1
  export * from './microorm-service';
2
+ export * from './mikro-orm-format.error.service';
3
+ export * from './micro-orm-util.service';
@@ -2,4 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./microorm-service"), exports);
5
+ tslib_1.__exportStar(require("./mikro-orm-format.error.service"), exports);
6
+ tslib_1.__exportStar(require("./micro-orm-util.service"), exports);
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/service/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/service/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,2EAAiD;AACjD,mEAAyC"}
@@ -0,0 +1,11 @@
1
+ import { ErrorFormatService } from '@klerick/json-api-nestjs';
2
+ import { HttpException } from '@nestjs/common';
3
+ import { EntityManager } from '@mikro-orm/core';
4
+ export declare class MikroOrmFormatErrorService extends ErrorFormatService {
5
+ em: EntityManager;
6
+ private mainConfig;
7
+ private errorMsg;
8
+ formatError(error: unknown): HttpException;
9
+ private formatValidationError;
10
+ private prepareDataBaseError;
11
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MikroOrmFormatErrorService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const json_api_nestjs_1 = require("@klerick/json-api-nestjs");
6
+ const common_1 = require("@nestjs/common");
7
+ const core_1 = require("@mikro-orm/core");
8
+ const constants_1 = require("../constants");
9
+ const duplicateItems = (errorText, options, detail) => {
10
+ errorText = 'Duplicate value';
11
+ if (detail) {
12
+ const matches = detail.match(/(?<=\().+?(?=\))/gm);
13
+ if (matches) {
14
+ errorText = `Duplicate value in the "${matches[0]}"`;
15
+ }
16
+ }
17
+ const error = {
18
+ code: 'invalid_arguments',
19
+ message: errorText,
20
+ path: ['data', 'attributes'],
21
+ };
22
+ return new common_1.ConflictException([error], options);
23
+ };
24
+ class MikroOrmFormatErrorService extends json_api_nestjs_1.ErrorFormatService {
25
+ constructor() {
26
+ super(...arguments);
27
+ this.errorMsg = 'Internal Server Error';
28
+ }
29
+ formatError(error) {
30
+ try {
31
+ if (error instanceof core_1.ValidationError) {
32
+ return this.formatValidationError(error);
33
+ }
34
+ if (error instanceof core_1.DriverException) {
35
+ return this.prepareDataBaseError(error);
36
+ }
37
+ return super.formatError(error);
38
+ }
39
+ catch (error) {
40
+ return super.formatError(error);
41
+ }
42
+ }
43
+ formatValidationError(error) {
44
+ const { message } = error;
45
+ const entity = error.getEntity();
46
+ const errorObject = {
47
+ code: 'invalid_arguments',
48
+ message: message.split('\n').at(0) || message,
49
+ path: [],
50
+ };
51
+ if (entity) {
52
+ errorObject['path'] = ['data', 'attributes'];
53
+ }
54
+ const descriptionOrOptions = this.mainConfig.options
55
+ .debug
56
+ ? { cause: error }
57
+ : {};
58
+ return new common_1.BadRequestException([errorObject], descriptionOrOptions);
59
+ }
60
+ prepareDataBaseError(error) {
61
+ if (!this.em
62
+ .getPlatform()
63
+ .getConfig()
64
+ .getDriver()
65
+ .constructor.name.startsWith('Postgre')) {
66
+ return super.formatError(error);
67
+ }
68
+ const { errorCode, errorMsg, detail, table } = {
69
+ errorCode: error.code,
70
+ errorMsg: error.message,
71
+ detail: Reflect.get(error, 'detail'),
72
+ table: Reflect.get(error, 'table'),
73
+ };
74
+ const descriptionOrOptions = this.mainConfig.options
75
+ .debug
76
+ ? { cause: error }
77
+ : {};
78
+ switch (error.constructor) {
79
+ case core_1.UniqueConstraintViolationException:
80
+ return duplicateItems(errorMsg, descriptionOrOptions, detail);
81
+ default:
82
+ return super.formatError(error);
83
+ }
84
+ }
85
+ }
86
+ exports.MikroOrmFormatErrorService = MikroOrmFormatErrorService;
87
+ tslib_1.__decorate([
88
+ (0, common_1.Inject)(constants_1.CURRENT_ENTITY_MANAGER_TOKEN),
89
+ tslib_1.__metadata("design:type", core_1.EntityManager)
90
+ ], MikroOrmFormatErrorService.prototype, "em", void 0);
91
+ tslib_1.__decorate([
92
+ (0, common_1.Inject)(json_api_nestjs_1.MODULE_OPTIONS_TOKEN),
93
+ tslib_1.__metadata("design:type", Object)
94
+ ], MikroOrmFormatErrorService.prototype, "mainConfig", void 0);
95
+ //# sourceMappingURL=mikro-orm-format.error.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mikro-orm-format.error.service.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/service/mikro-orm-format.error.service.ts"],"names":[],"mappings":"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"}