@creator.co/wapi 1.6.1 → 2.0.0-alpha.1

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 (84) hide show
  1. package/.github/workflows/npmpublish.yml +1 -1
  2. package/.github/workflows/prs.yml +1 -1
  3. package/dist/index.js +45 -31
  4. package/dist/index.js.map +1 -1
  5. package/dist/jest.config.js +2 -4
  6. package/dist/jest.config.js.map +1 -1
  7. package/dist/package.json +12 -12
  8. package/dist/src/API/Request.js +53 -59
  9. package/dist/src/API/Request.js.map +1 -1
  10. package/dist/src/API/Response.js +81 -156
  11. package/dist/src/API/Response.js.map +1 -1
  12. package/dist/src/BaseEvent/EventProcessor.js +54 -132
  13. package/dist/src/BaseEvent/EventProcessor.js.map +1 -1
  14. package/dist/src/BaseEvent/Process.js +40 -98
  15. package/dist/src/BaseEvent/Process.js.map +1 -1
  16. package/dist/src/BaseEvent/Transaction.js +122 -310
  17. package/dist/src/BaseEvent/Transaction.js.map +1 -1
  18. package/dist/src/Cache/Redis.js +55 -119
  19. package/dist/src/Cache/Redis.js.map +1 -1
  20. package/dist/src/Cache/types.js +1 -2
  21. package/dist/src/Config/Configuration.js +46 -86
  22. package/dist/src/Config/Configuration.js.map +1 -1
  23. package/dist/src/Config/EnvironmentVar.js +57 -119
  24. package/dist/src/Config/EnvironmentVar.js.map +1 -1
  25. package/dist/src/Crypto/Crypto.js +35 -82
  26. package/dist/src/Crypto/Crypto.js.map +1 -1
  27. package/dist/src/Crypto/JWT.js +12 -27
  28. package/dist/src/Crypto/JWT.js.map +1 -1
  29. package/dist/src/Database/Database.js +3 -8
  30. package/dist/src/Database/Database.js.map +1 -1
  31. package/dist/src/Database/DatabaseManager.js +23 -28
  32. package/dist/src/Database/DatabaseManager.js.map +1 -1
  33. package/dist/src/Database/DatabaseTransaction.js +50 -166
  34. package/dist/src/Database/DatabaseTransaction.js.map +1 -1
  35. package/dist/src/Database/index.js +11 -15
  36. package/dist/src/Database/index.js.map +1 -1
  37. package/dist/src/Database/integrations/knex/KnexDatabase.js +22 -76
  38. package/dist/src/Database/integrations/knex/KnexDatabase.js.map +1 -1
  39. package/dist/src/Database/integrations/knex/KnexTransaction.js +19 -85
  40. package/dist/src/Database/integrations/knex/KnexTransaction.js.map +1 -1
  41. package/dist/src/Database/integrations/kysely/KyselyDatabase.js +37 -88
  42. package/dist/src/Database/integrations/kysely/KyselyDatabase.js.map +1 -1
  43. package/dist/src/Database/integrations/kysely/KyselyTransaction.js +46 -114
  44. package/dist/src/Database/integrations/kysely/KyselyTransaction.js.map +1 -1
  45. package/dist/src/Database/integrations/pgsql/PostgresDatabase.js +20 -71
  46. package/dist/src/Database/integrations/pgsql/PostgresDatabase.js.map +1 -1
  47. package/dist/src/Database/integrations/pgsql/PostgresTransaction.js +19 -85
  48. package/dist/src/Database/integrations/pgsql/PostgresTransaction.js.map +1 -1
  49. package/dist/src/Database/types.js +1 -2
  50. package/dist/src/Globals.js +93 -98
  51. package/dist/src/Globals.js.map +1 -1
  52. package/dist/src/Logger/Logger.js +88 -222
  53. package/dist/src/Logger/Logger.js.map +1 -1
  54. package/dist/src/Mailer/Mailer.js +83 -204
  55. package/dist/src/Mailer/Mailer.js.map +1 -1
  56. package/dist/src/Publisher/Publisher.js +43 -107
  57. package/dist/src/Publisher/Publisher.js.map +1 -1
  58. package/dist/src/Server/RouteResolver.js +22 -49
  59. package/dist/src/Server/RouteResolver.js.map +1 -1
  60. package/dist/src/Server/Router.js +12 -16
  61. package/dist/src/Server/Router.js.map +1 -1
  62. package/dist/src/Server/lib/ContainerServer.js +21 -83
  63. package/dist/src/Server/lib/ContainerServer.js.map +1 -1
  64. package/dist/src/Server/lib/Server.js +50 -99
  65. package/dist/src/Server/lib/Server.js.map +1 -1
  66. package/dist/src/Server/lib/container/GenericHandler.js +32 -107
  67. package/dist/src/Server/lib/container/GenericHandler.js.map +1 -1
  68. package/dist/src/Server/lib/container/GenericHandlerEvent.js +37 -81
  69. package/dist/src/Server/lib/container/GenericHandlerEvent.js.map +1 -1
  70. package/dist/src/Server/lib/container/HealthHandler.js +3 -35
  71. package/dist/src/Server/lib/container/HealthHandler.js.map +1 -1
  72. package/dist/src/Server/lib/container/Proxy.js +64 -127
  73. package/dist/src/Server/lib/container/Proxy.js.map +1 -1
  74. package/dist/src/Server/lib/container/Utils.js +12 -55
  75. package/dist/src/Server/lib/container/Utils.js.map +1 -1
  76. package/dist/src/Util/AsyncSingleton.js +40 -164
  77. package/dist/src/Util/AsyncSingleton.js.map +1 -1
  78. package/dist/src/Util/Utils.js +18 -24
  79. package/dist/src/Util/Utils.js.map +1 -1
  80. package/dist/src/Validation/Validator.js +10 -16
  81. package/dist/src/Validation/Validator.js.map +1 -1
  82. package/package.json +12 -12
  83. package/tests/Logger/Logger.test.ts +5 -3
  84. package/tsconfig.json +3 -1
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,83 +7,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
8
  });
10
9
  };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __read = (this && this.__read) || function (o, n) {
39
- var m = typeof Symbol === "function" && o[Symbol.iterator];
40
- if (!m) return o;
41
- var i = m.call(o), r, ar = [], e;
42
- try {
43
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
- }
45
- catch (error) { e = { error: error }; }
46
- finally {
47
- try {
48
- if (r && !r.done && (m = i["return"])) m.call(i);
49
- }
50
- finally { if (e) throw e.error; }
51
- }
52
- return ar;
53
- };
54
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
55
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
56
- if (ar || !(i in from)) {
57
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
58
- ar[i] = from[i];
59
- }
60
- }
61
- return to.concat(ar || Array.prototype.slice.call(from));
62
- };
63
- var __values = (this && this.__values) || function(o) {
64
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
65
- if (m) return m.call(o);
66
- if (o && typeof o.length === "number") return {
67
- next: function () {
68
- if (o && i >= o.length) o = void 0;
69
- return { value: o && o[i++], done: !o };
70
- }
71
- };
72
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
73
- };
74
- Object.defineProperty(exports, "__esModule", { value: true });
75
- var Request_1 = require("../API/Request");
76
- var Response_1 = require("../API/Response");
77
- var DatabaseManager_1 = require("../Database/DatabaseManager");
78
- var Globals_1 = require("../Globals");
79
- var Logger_1 = require("../Logger/Logger");
80
- var Publisher_1 = require("../Publisher/Publisher");
10
+ import Request from '../API/Request';
11
+ import Response from '../API/Response';
12
+ import { DatabaseManager } from '../Database/DatabaseManager';
13
+ import Globals from '../Globals';
14
+ import Logger from '../Logger/Logger';
15
+ import Publisher from '../Publisher/Publisher';
81
16
  /**
82
17
  * Represents a transaction object that handles the execution of a request and manages the response.
83
18
  * @template InputType - The type of the input data for the transaction.
84
19
  * @template ResponseInnerType - The type of the inner response data for the transaction.
85
20
  * @template MiscRespType - The type of miscellaneous response data for the transaction.
86
21
  */
87
- var Transaction = /** @class */ (function () {
22
+ export default class Transaction {
88
23
  /**
89
24
  * Constructs a new instance of the Transaction class.
90
25
  * @param {APIGatewayEvent | SQSEvent} event - The event object passed to the Lambda function.
@@ -92,17 +27,17 @@ var Transaction = /** @class */ (function () {
92
27
  * @param {TransactionConfig} [config] - Optional configuration object for the transaction.
93
28
  * @returns None
94
29
  */
95
- function Transaction(event, context, config) {
30
+ constructor(event, context, config) {
96
31
  /**
97
32
  * The instance of the DatabaseManager class used for managing the database.
98
33
  */
99
- this.databaseManager = DatabaseManager_1.DatabaseManager.INSTANCE;
34
+ this.databaseManager = DatabaseManager.INSTANCE;
100
35
  /**
101
36
  * An array of database transactions.
102
37
  * @type {DatabaseTransaction[]}
103
38
  */
104
39
  this.transactions = [];
105
- var transactionId = context.awsRequestId
40
+ const transactionId = context.awsRequestId
106
41
  ? context.awsRequestId
107
42
  : event.requestContext
108
43
  ? event.requestContext.requestId
@@ -116,9 +51,9 @@ var Transaction = /** @class */ (function () {
116
51
  this.syncReturn = !!(config === null || config === void 0 ? void 0 : config.syncReturn);
117
52
  this.retrowErrors = !!(config === null || config === void 0 ? void 0 : config.throwOnErrors); /* retrow internal errors */
118
53
  // components
119
- this.logger = new Logger_1.default(config === null || config === void 0 ? void 0 : config.logger, transactionId);
120
- this.request = new Request_1.default(this.event, this.context, this.logger);
121
- this.publisher = new Publisher_1.default(config === null || config === void 0 ? void 0 : config.publisher);
54
+ this.logger = new Logger(config === null || config === void 0 ? void 0 : config.logger, transactionId);
55
+ this.request = new Request(this.event, this.context, this.logger);
56
+ this.publisher = new Publisher(config === null || config === void 0 ? void 0 : config.publisher);
122
57
  }
123
58
  /**
124
59
  * Executes a transaction using the provided execution function and returns a promise
@@ -126,280 +61,157 @@ var Transaction = /** @class */ (function () {
126
61
  * @param {TransactionExecution<Transaction<InputType, ResponseInnerType, MiscRespType>, ResponseInnerType, MiscRespType>} executionFunc - The execution function to be executed.
127
62
  * @returns {Promise<Response<ResponseInnerType | ResponseErrorType> | MiscRespType>} - A promise that resolves to the response or miscellaneous response.
128
63
  */
129
- Transaction.prototype.execute = function (executionFunc) {
130
- return __awaiter(this, void 0, void 0, function () {
131
- var _this = this;
132
- return __generator(this, function (_a) {
133
- switch (_a.label) {
134
- case 0: return [4 /*yield*/, this.executeLoggerFlush(function () { return __awaiter(_this, void 0, void 0, function () {
135
- var _this = this;
136
- return __generator(this, function (_a) {
137
- switch (_a.label) {
138
- case 0: return [4 /*yield*/, this.executeDBTransactions(function () { return __awaiter(_this, void 0, void 0, function () {
139
- return __generator(this, function (_a) {
140
- switch (_a.label) {
141
- case 0: return [4 /*yield*/, this.iexecute(executionFunc)];
142
- case 1: return [2 /*return*/, _a.sent()];
143
- }
144
- });
145
- }); })];
146
- case 1:
147
- _a.sent();
148
- return [2 /*return*/];
149
- }
150
- });
151
- }); })
152
- // return raw response if sync return is requested
153
- ];
154
- case 1:
155
- _a.sent();
156
- // return raw response if sync return is requested
157
- if (this.syncReturn)
158
- return [2 /*return*/, this.response
159
- // allow request to async succeed through lambda context
160
- ];
161
- // allow request to async succeed through lambda context
162
- return [2 /*return*/, null];
163
- }
164
- });
64
+ execute(executionFunc) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ yield this.executeLoggerFlush(() => __awaiter(this, void 0, void 0, function* () {
67
+ yield this.executeDBTransactions(() => __awaiter(this, void 0, void 0, function* () {
68
+ return yield this.iexecute(executionFunc);
69
+ }));
70
+ }));
71
+ // return raw response if sync return is requested
72
+ if (this.syncReturn)
73
+ return this.response;
74
+ // allow request to async succeed through lambda context
75
+ return null;
165
76
  });
166
- };
77
+ }
167
78
  /**
168
79
  * Executes a transaction using the provided execution function and handles the response.
169
80
  * @param {TransactionExecution<Transaction<InputType, ResponseInnerType, MiscRespType>, ResponseInnerType, MiscRespType>} executionFunc - The function to execute the transaction.
170
81
  * @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the execution failed or not.
171
82
  */
172
- Transaction.prototype.iexecute = function (executionFunc) {
173
- return __awaiter(this, void 0, void 0, function () {
174
- var executionFailed, _a, e_1;
175
- return __generator(this, function (_b) {
176
- switch (_b.label) {
177
- case 0:
178
- executionFailed = true //failed til we say no!
179
- ;
180
- _b.label = 1;
181
- case 1:
182
- _b.trys.push([1, 8, , 10]);
183
- //Execute
184
- this.logger.debug('Starting main request code');
185
- _a = this;
186
- return [4 /*yield*/, executionFunc(this)
187
- //Answer client
188
- ];
189
- case 2:
190
- _a.response = _b.sent();
191
- if (!(this.response && this.response instanceof Response_1.default)) return [3 /*break*/, 4];
192
- return [4 /*yield*/, this.response.build(this.context, this, this.syncReturn)];
193
- case 3:
194
- _b.sent();
195
- executionFailed = !!(this.response.getBody() && this.response.getBody()['rollback']);
196
- return [3 /*break*/, 7];
197
- case 4:
198
- if (!(this.syncReturn && this.response)) return [3 /*break*/, 5];
199
- this.logger.log('Sync return with different response object');
200
- this.logger.debug(this.response);
201
- executionFailed = false;
202
- return [3 /*break*/, 7];
203
- case 5:
204
- this.response = this.getErrorResponse(Globals_1.default.ErrorResponseInvalidServerResponse, Globals_1.default.ErrorCode_APIError);
205
- return [4 /*yield*/, this.response.build(this.context, this, this.syncReturn)];
206
- case 6:
207
- _b.sent();
208
- this.logger.error('Invalid response object from main request code.');
209
- _b.label = 7;
210
- case 7: return [3 /*break*/, 10];
211
- case 8:
212
- e_1 = _b.sent();
213
- /*EXECUTION FAIL*/
214
- this.logger.error('Exception when executing main request code.');
215
- this.logger.exception(e_1);
216
- //retrow?
217
- if (this.retrowErrors)
218
- throw e_1;
219
- //envelope exception?
220
- this.response = this.getErrorResponse(Globals_1.default.ErrorResponseUnhandledError, Globals_1.default.ErrorCode_APIError);
221
- return [4 /*yield*/, this.response.build(this.context, this, this.syncReturn)];
222
- case 9:
223
- _b.sent();
224
- return [3 /*break*/, 10];
225
- case 10: return [2 /*return*/, executionFailed];
83
+ iexecute(executionFunc) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ let executionFailed = true; //failed til we say no!
86
+ //safe execution handler
87
+ try {
88
+ //Execute
89
+ this.logger.debug('Starting main request code');
90
+ this.response = yield executionFunc(this);
91
+ //Answer client
92
+ if (this.response && this.response instanceof Response) {
93
+ yield this.response.build(this.context, this, this.syncReturn);
94
+ executionFailed = !!(this.response.getBody() && this.response.getBody()['rollback']);
95
+ }
96
+ else if (this.syncReturn && this.response) {
97
+ this.logger.log('Sync return with different response object');
98
+ this.logger.debug(this.response);
99
+ executionFailed = false;
226
100
  }
227
- });
101
+ else {
102
+ this.response = this.getErrorResponse(Globals.ErrorResponseInvalidServerResponse, Globals.ErrorCode_APIError);
103
+ yield this.response.build(this.context, this, this.syncReturn);
104
+ this.logger.error('Invalid response object from main request code.');
105
+ }
106
+ }
107
+ catch (e) {
108
+ /*EXECUTION FAIL*/
109
+ this.logger.error('Exception when executing main request code.');
110
+ this.logger.exception(e);
111
+ //retrow?
112
+ if (this.retrowErrors)
113
+ throw e;
114
+ //envelope exception?
115
+ this.response = this.getErrorResponse(Globals.ErrorResponseUnhandledError, Globals.ErrorCode_APIError);
116
+ yield this.response.build(this.context, this, this.syncReturn);
117
+ }
118
+ return executionFailed;
228
119
  });
229
- };
120
+ }
230
121
  /**
231
122
  * Retrieves a database transaction based on the provided database configuration.
232
123
  * @param {DbConfig<S>} config - The configuration object for the database.
233
124
  * @returns {Promise<DatabaseTransactionType<S, DBSchema>>} A promise that resolves to the database transaction.
234
125
  */
235
- Transaction.prototype.getDbTransaction = function (config) {
236
- return __awaiter(this, void 0, void 0, function () {
237
- var db, dbTrans;
238
- return __generator(this, function (_a) {
239
- switch (_a.label) {
240
- case 0:
241
- db = this.getDatabase(config);
242
- return [4 /*yield*/, db.transaction()];
243
- case 1:
244
- dbTrans = _a.sent();
245
- this.transactions.push(dbTrans);
246
- return [2 /*return*/, dbTrans];
247
- }
248
- });
126
+ getDbTransaction(config) {
127
+ return __awaiter(this, void 0, void 0, function* () {
128
+ const db = this.getDatabase(config);
129
+ const dbTrans = yield db.transaction();
130
+ this.transactions.push(dbTrans);
131
+ return dbTrans;
249
132
  });
250
- };
133
+ }
251
134
  /**
252
135
  * Retrieves a database instance based on the provided configuration.
253
136
  * @param {DbConfig<S>} config - The configuration object specifying the type of database.
254
137
  * @returns {DatabaseImplType<S, DBSchema>} A database instance based on the provided configuration.
255
138
  */
256
- Transaction.prototype.getDatabase = function (config) {
139
+ getDatabase(config) {
257
140
  return this.databaseManager.create(config);
258
- };
141
+ }
259
142
  /*
260
143
  * Executes a series of database transactions in a safe manner.
261
144
  * @param {Function} safeExecution - The function that contains the database transactions to be executed.
262
145
  * @returns None
263
146
  * @throws {Error} - If an exception occurs during the execution of the transactions and `retrowErrors` is true.
264
147
  */
265
- Transaction.prototype.executeDBTransactions = function (safeExecution) {
266
- return __awaiter(this, void 0, void 0, function () {
267
- var execFailed, _a, _b, transaction, e_2, e_3_1, e_4, _c, _d, transaction, e_5, e_6_1;
268
- var e_3, _e, e_6, _f;
269
- return __generator(this, function (_g) {
270
- switch (_g.label) {
271
- case 0:
272
- _g.trys.push([0, 12, , 23]);
273
- return [4 /*yield*/, safeExecution()];
274
- case 1:
275
- execFailed = _g.sent();
276
- _g.label = 2;
277
- case 2:
278
- _g.trys.push([2, 9, 10, 11]);
279
- _a = __values(__spreadArray([], __read(this.transactions), false).reverse()), _b = _a.next();
280
- _g.label = 3;
281
- case 3:
282
- if (!!_b.done) return [3 /*break*/, 8];
283
- transaction = _b.value;
284
- _g.label = 4;
285
- case 4:
286
- _g.trys.push([4, 6, , 7]);
287
- return [4 /*yield*/, transaction[execFailed ? 'closeFailure' : 'closeSuccess']()];
288
- case 5:
289
- _g.sent();
290
- return [3 /*break*/, 7];
291
- case 6:
292
- e_2 = _g.sent();
148
+ executeDBTransactions(safeExecution) {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ try {
151
+ // Execute
152
+ const execFailed = yield safeExecution();
153
+ for (const transaction of [...this.transactions].reverse()) {
154
+ try {
155
+ yield transaction[execFailed ? 'closeFailure' : 'closeSuccess']();
156
+ }
157
+ catch (e) {
293
158
  // TODO: should we keep committing transactions even if one fails?
294
159
  this.logger.error('Exception when closing DB transactions after success.');
295
- this.logger.exception(e_2);
296
- return [3 /*break*/, 7];
297
- case 7:
298
- _b = _a.next();
299
- return [3 /*break*/, 3];
300
- case 8: return [3 /*break*/, 11];
301
- case 9:
302
- e_3_1 = _g.sent();
303
- e_3 = { error: e_3_1 };
304
- return [3 /*break*/, 11];
305
- case 10:
306
- try {
307
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
308
- }
309
- finally { if (e_3) throw e_3.error; }
310
- return [7 /*endfinally*/];
311
- case 11: return [3 /*break*/, 23];
312
- case 12:
313
- e_4 = _g.sent();
314
- _g.label = 13;
315
- case 13:
316
- _g.trys.push([13, 20, 21, 22]);
317
- _c = __values(__spreadArray([], __read(this.transactions), false).reverse()), _d = _c.next();
318
- _g.label = 14;
319
- case 14:
320
- if (!!_d.done) return [3 /*break*/, 19];
321
- transaction = _d.value;
322
- _g.label = 15;
323
- case 15:
324
- _g.trys.push([15, 17, , 18]);
325
- return [4 /*yield*/, transaction.closeFailure()];
326
- case 16:
327
- _g.sent();
328
- return [3 /*break*/, 18];
329
- case 17:
330
- e_5 = _g.sent();
160
+ this.logger.exception(e);
161
+ }
162
+ }
163
+ }
164
+ catch (e) {
165
+ /* this part of the code handle exceptions at transaction level,
166
+ so probably a bug but we still handle such */
167
+ for (const transaction of [...this.transactions].reverse()) {
168
+ try {
169
+ yield transaction.closeFailure();
170
+ }
171
+ catch (e) {
331
172
  this.logger.error('Exception when closing DB transactions after failure.');
332
- this.logger.exception(e_5);
333
- return [3 /*break*/, 18];
334
- case 18:
335
- _d = _c.next();
336
- return [3 /*break*/, 14];
337
- case 19: return [3 /*break*/, 22];
338
- case 20:
339
- e_6_1 = _g.sent();
340
- e_6 = { error: e_6_1 };
341
- return [3 /*break*/, 22];
342
- case 21:
343
- try {
344
- if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
345
- }
346
- finally { if (e_6) throw e_6.error; }
347
- return [7 /*endfinally*/];
348
- case 22:
349
- this.logger.error('Exception when executing DB transactions.');
350
- this.logger.log(e_4.stack);
351
- //retrow?
352
- if (this.retrowErrors)
353
- throw e_4;
354
- return [3 /*break*/, 23];
355
- case 23: return [2 /*return*/];
173
+ this.logger.exception(e);
174
+ }
356
175
  }
357
- });
176
+ this.logger.error('Exception when executing DB transactions.');
177
+ this.logger.log(e.stack);
178
+ //retrow?
179
+ if (this.retrowErrors)
180
+ throw e;
181
+ }
358
182
  });
359
- };
183
+ }
360
184
  /**
361
185
  * Executes a logger flush operation with error handling and logging.
362
186
  * @param {Function} safeExecution - The function to execute safely.
363
187
  * @returns None
364
188
  * @throws {Error} - If `retrowErrors` is true and an error occurs during execution.
365
189
  */
366
- Transaction.prototype.executeLoggerFlush = function (safeExecution) {
367
- return __awaiter(this, void 0, void 0, function () {
368
- var e_7;
369
- return __generator(this, function (_a) {
370
- switch (_a.label) {
371
- case 0:
372
- _a.trys.push([0, 2, 3, 4]);
373
- return [4 /*yield*/, safeExecution()];
374
- case 1:
375
- _a.sent();
376
- return [3 /*break*/, 4];
377
- case 2:
378
- e_7 = _a.sent();
379
- this.logger.error('Exception when flushing logs.');
380
- this.logger.exception(e_7);
381
- //retrow?
382
- if (this.retrowErrors)
383
- throw e_7;
384
- return [3 /*break*/, 4];
385
- case 3:
386
- this.logger.debug('Transaction ended');
387
- return [7 /*endfinally*/];
388
- case 4: return [2 /*return*/];
389
- }
390
- });
190
+ executeLoggerFlush(safeExecution) {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ try {
193
+ yield safeExecution();
194
+ }
195
+ catch (e) {
196
+ this.logger.error('Exception when flushing logs.');
197
+ this.logger.exception(e);
198
+ //retrow?
199
+ if (this.retrowErrors)
200
+ throw e;
201
+ }
202
+ finally {
203
+ this.logger.debug('Transaction ended');
204
+ }
391
205
  });
392
- };
206
+ }
393
207
  /**
394
208
  * Returns an error response with the specified error message and error code.
395
209
  * @param {string} error - The error message.
396
210
  * @param {string} code - The error code.
397
211
  * @returns {Response<ResponseErrorType>} - The error response.
398
212
  */
399
- Transaction.prototype.getErrorResponse = function (error, code) {
400
- return Response_1.default.BadRequestResponseWithRollback(error, code);
401
- };
402
- return Transaction;
403
- }());
404
- exports.default = Transaction;
213
+ getErrorResponse(error, code) {
214
+ return Response.BadRequestResponseWithRollback(error, code);
215
+ }
216
+ }
405
217
  //# sourceMappingURL=Transaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/BaseEvent/Transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/BaseEvent/Transaction.ts"],"names":[],"mappings":"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"}