@creator.co/wapi 1.2.3 → 1.2.5
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/.github/workflows/npmpublish.yml +2 -5
- package/README.md +1 -3
- package/dist/index.d.ts +11 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/jest.config.d.ts +3 -0
- package/dist/jest.config.js +34 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/package.json +70 -0
- package/dist/src/API/Request.d.ts +140 -0
- package/dist/src/API/Request.js +182 -0
- package/dist/src/API/Request.js.map +1 -0
- package/dist/src/API/Response.d.ts +256 -0
- package/dist/src/API/Response.js +398 -0
- package/dist/src/API/Response.js.map +1 -0
- package/dist/src/API/Utils.d.ts +63 -0
- package/dist/src/API/Utils.js +104 -0
- package/dist/src/API/Utils.js.map +1 -0
- package/dist/src/BaseEvent/EventProcessor.d.ts +81 -0
- package/dist/src/BaseEvent/EventProcessor.js +182 -0
- package/dist/src/BaseEvent/EventProcessor.js.map +1 -0
- package/dist/src/BaseEvent/Process.d.ts +74 -0
- package/dist/src/BaseEvent/Process.js +142 -0
- package/dist/src/BaseEvent/Process.js.map +1 -0
- package/dist/src/BaseEvent/Transaction.d.ts +39 -0
- package/dist/src/BaseEvent/Transaction.js +354 -0
- package/dist/src/BaseEvent/Transaction.js.map +1 -0
- package/dist/src/Config/Configuration.d.ts +131 -0
- package/dist/src/Config/Configuration.js +153 -0
- package/dist/src/Config/Configuration.js.map +1 -0
- package/dist/src/Config/EnvironmentVar.d.ts +101 -0
- package/dist/src/Config/EnvironmentVar.js +213 -0
- package/dist/src/Config/EnvironmentVar.js.map +1 -0
- package/dist/src/Crypto/Crypto.d.ts +57 -0
- package/dist/src/Crypto/Crypto.js +126 -0
- package/dist/src/Crypto/Crypto.js.map +1 -0
- package/dist/src/Crypto/JWT.d.ts +64 -0
- package/dist/src/Crypto/JWT.js +74 -0
- package/dist/src/Crypto/JWT.js.map +1 -0
- package/dist/src/Database/Database.d.ts +18 -0
- package/dist/src/Database/Database.js +18 -0
- package/dist/src/Database/Database.js.map +1 -0
- package/dist/src/Database/DatabaseManager.d.ts +32 -0
- package/dist/src/Database/DatabaseManager.js +50 -0
- package/dist/src/Database/DatabaseManager.js.map +1 -0
- package/dist/src/Database/DatabaseTransaction.d.ts +65 -0
- package/dist/src/Database/DatabaseTransaction.js +183 -0
- package/dist/src/Database/DatabaseTransaction.js.map +1 -0
- package/dist/src/Database/integrations/knex/KnexDatabase.d.ts +22 -0
- package/dist/src/Database/integrations/knex/KnexDatabase.js +108 -0
- package/dist/src/Database/integrations/knex/KnexDatabase.js.map +1 -0
- package/dist/src/Database/integrations/knex/KnexTransaction.d.ts +37 -0
- package/dist/src/Database/integrations/knex/KnexTransaction.js +60 -0
- package/dist/src/Database/integrations/knex/KnexTransaction.js.map +1 -0
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.d.ts +30 -0
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.js +108 -0
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.js.map +1 -0
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.d.ts +37 -0
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.js +60 -0
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.js.map +1 -0
- package/dist/src/Globals.d.ts +161 -0
- package/dist/src/Globals.js +173 -0
- package/dist/src/Globals.js.map +1 -0
- package/dist/src/Logger/Logger.d.ts +180 -0
- package/dist/src/Logger/Logger.js +412 -0
- package/dist/src/Logger/Logger.js.map +1 -0
- package/dist/src/Mailer/Mailer.d.ts +107 -0
- package/dist/src/Mailer/Mailer.js +313 -0
- package/dist/src/Mailer/Mailer.js.map +1 -0
- package/dist/src/Publisher/Publisher.d.ts +47 -0
- package/dist/src/Publisher/Publisher.js +141 -0
- package/dist/src/Publisher/Publisher.js.map +1 -0
- package/dist/src/Server/RouteResolver.d.ts +41 -0
- package/dist/src/Server/RouteResolver.js +135 -0
- package/dist/src/Server/RouteResolver.js.map +1 -0
- package/dist/src/Server/Router.d.ts +104 -0
- package/dist/src/Server/Router.js +45 -0
- package/dist/src/Server/Router.js.map +1 -0
- package/dist/src/Server/lib/ContainerServer.d.ts +58 -0
- package/dist/src/Server/lib/ContainerServer.js +143 -0
- package/dist/src/Server/lib/ContainerServer.js.map +1 -0
- package/dist/src/Server/lib/Server.d.ts +60 -0
- package/dist/src/Server/lib/Server.js +137 -0
- package/dist/src/Server/lib/Server.js.map +1 -0
- package/dist/src/Server/lib/container/GenericHandler.d.ts +4 -0
- package/dist/src/Server/lib/container/GenericHandler.js +138 -0
- package/dist/src/Server/lib/container/GenericHandler.js.map +1 -0
- package/dist/src/Server/lib/container/GenericHandlerEvent.d.ts +67 -0
- package/dist/src/Server/lib/container/GenericHandlerEvent.js +189 -0
- package/dist/src/Server/lib/container/GenericHandlerEvent.js.map +1 -0
- package/dist/src/Server/lib/container/HealthHandler.d.ts +3 -0
- package/dist/src/Server/lib/container/HealthHandler.js +45 -0
- package/dist/src/Server/lib/container/HealthHandler.js.map +1 -0
- package/dist/src/Server/lib/container/Proxy.d.ts +95 -0
- package/dist/src/Server/lib/container/Proxy.js +202 -0
- package/dist/src/Server/lib/container/Proxy.js.map +1 -0
- package/dist/src/Server/lib/container/Utils.d.ts +18 -0
- package/dist/src/Server/lib/container/Utils.js +84 -0
- package/dist/src/Server/lib/container/Utils.js.map +1 -0
- package/dist/src/Validation/Validator.d.ts +21 -0
- package/dist/src/Validation/Validator.js +48 -0
- package/dist/src/Validation/Validator.js.map +1 -0
- package/jest.config.ts +2 -9
- package/package.json +10 -4
- package/src/BaseEvent/Transaction.ts +48 -18
- package/src/Database/Database.ts +19 -0
- package/src/Database/DatabaseManager.ts +51 -0
- package/src/Database/DatabaseTransaction.ts +118 -0
- package/src/Database/integrations/knex/KnexDatabase.ts +47 -0
- package/src/Database/integrations/knex/KnexTransaction.ts +51 -0
- package/src/Database/integrations/pgsql/PostgresDatabase.ts +49 -0
- package/src/Database/integrations/pgsql/PostgresTransaction.ts +54 -0
- package/src/Database/types.d.ts +49 -0
- package/src/Server/lib/container/Proxy.ts +2 -1
- package/tests/BaseEvent/Transaction.test.ts +59 -0
- package/tests/Database/DatabaseManager.test.ts +55 -0
- package/tests/Database/integrations/knex/KnexDatabase.test.ts +53 -0
- package/tests/Database/integrations/knex/KnexTransaction.test.ts +133 -0
- package/tests/Database/integrations/pg/PostgresDatabase.test.ts +50 -0
- package/tests/Database/integrations/pg/PostgresTransaction.test.ts +51 -0
- package/tsconfig.json +5 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { APIGatewayEvent, Context, SQSEvent } from 'aws-lambda';
|
|
2
|
+
import Request from '../API/Request';
|
|
3
|
+
import Response, { ResponseErrorType } from '../API/Response';
|
|
4
|
+
import type { DatabaseTransactionType, DatabaseType, DbConfig } from '../Database/types';
|
|
5
|
+
import Logger, { LoggerConfig } from '../Logger/Logger';
|
|
6
|
+
import Publisher, { PublisherConfig } from '../Publisher/Publisher';
|
|
7
|
+
export type TransactionExecution<TransactionType, ResponseInnerType, MiscRespType = null> = (transaction: TransactionType) => Promise<Response<ResponseInnerType> | Response<ResponseErrorType> | MiscRespType>;
|
|
8
|
+
export type TransactionConfig = {
|
|
9
|
+
throwOnErrors?: boolean;
|
|
10
|
+
syncReturn?: boolean;
|
|
11
|
+
logger?: LoggerConfig;
|
|
12
|
+
publisher?: PublisherConfig;
|
|
13
|
+
};
|
|
14
|
+
export default class Transaction<InputType = object, ResponseInnerType = null, MiscRespType = null> {
|
|
15
|
+
private databaseManager;
|
|
16
|
+
private transactions;
|
|
17
|
+
private event;
|
|
18
|
+
private context;
|
|
19
|
+
private response;
|
|
20
|
+
private syncReturn;
|
|
21
|
+
private retrowErrors;
|
|
22
|
+
readonly logger: Logger;
|
|
23
|
+
readonly request: Request<InputType>;
|
|
24
|
+
readonly publisher: Publisher;
|
|
25
|
+
responseProxy: (response: Response<ResponseInnerType>) => Promise<void>;
|
|
26
|
+
constructor(event: APIGatewayEvent | SQSEvent, context: Context, config?: TransactionConfig);
|
|
27
|
+
execute(executionFunc: TransactionExecution<Transaction<InputType, ResponseInnerType, MiscRespType>, ResponseInnerType, MiscRespType>): Promise<Response<ResponseInnerType | ResponseErrorType> | MiscRespType>;
|
|
28
|
+
private iexecute;
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves a database transaction for the specified database configuration.
|
|
31
|
+
* @async
|
|
32
|
+
* @param {DbConfig<S>} config - The configuration object for the database.
|
|
33
|
+
* @returns {Promise<DatabaseTransactionType<S>>} A promise that resolves to the database transaction.
|
|
34
|
+
*/
|
|
35
|
+
getDbTransaction<S extends DatabaseType>(config: DbConfig<S>): Promise<DatabaseTransactionType<S>>;
|
|
36
|
+
private executeDBTransactions;
|
|
37
|
+
private executeLoggerFlush;
|
|
38
|
+
private getErrorResponse;
|
|
39
|
+
}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
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");
|
|
81
|
+
var Transaction = /** @class */ (function () {
|
|
82
|
+
//
|
|
83
|
+
function Transaction(event, context, config) {
|
|
84
|
+
this.databaseManager = DatabaseManager_1.DatabaseManager.INSTANCE;
|
|
85
|
+
this.transactions = [];
|
|
86
|
+
var transactionId = context.awsRequestId
|
|
87
|
+
? context.awsRequestId
|
|
88
|
+
: event.requestContext
|
|
89
|
+
? event.requestContext.requestId
|
|
90
|
+
: 'unknown';
|
|
91
|
+
// transaction ctx
|
|
92
|
+
this.event = event;
|
|
93
|
+
this.context = context;
|
|
94
|
+
this.response = null;
|
|
95
|
+
// when set, this will be called with the response context right before calling the context suceed/fail - useful for writing the resp for example.
|
|
96
|
+
this.responseProxy = null;
|
|
97
|
+
// transaction flags
|
|
98
|
+
this.syncReturn = !!(config === null || config === void 0 ? void 0 : config.syncReturn);
|
|
99
|
+
this.retrowErrors = !!(config === null || config === void 0 ? void 0 : config.throwOnErrors); /* retrow internal errors */
|
|
100
|
+
// components
|
|
101
|
+
this.logger = new Logger_1.default(config === null || config === void 0 ? void 0 : config.logger, transactionId);
|
|
102
|
+
this.request = new Request_1.default(this.event, this.context, this.logger);
|
|
103
|
+
this.publisher = new Publisher_1.default(config === null || config === void 0 ? void 0 : config.publisher);
|
|
104
|
+
}
|
|
105
|
+
//Main interface
|
|
106
|
+
Transaction.prototype.execute = function (executionFunc) {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
108
|
+
var _this = this;
|
|
109
|
+
return __generator(this, function (_a) {
|
|
110
|
+
switch (_a.label) {
|
|
111
|
+
case 0: return [4 /*yield*/, this.executeLoggerFlush(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
112
|
+
var _this = this;
|
|
113
|
+
return __generator(this, function (_a) {
|
|
114
|
+
switch (_a.label) {
|
|
115
|
+
case 0: return [4 /*yield*/, this.executeDBTransactions(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
116
|
+
return __generator(this, function (_a) {
|
|
117
|
+
switch (_a.label) {
|
|
118
|
+
case 0: return [4 /*yield*/, this.iexecute(executionFunc)];
|
|
119
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}); })];
|
|
123
|
+
case 1:
|
|
124
|
+
_a.sent();
|
|
125
|
+
return [2 /*return*/];
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}); })
|
|
129
|
+
// return raw response if sync return is requested
|
|
130
|
+
];
|
|
131
|
+
case 1:
|
|
132
|
+
_a.sent();
|
|
133
|
+
// return raw response if sync return is requested
|
|
134
|
+
if (this.syncReturn)
|
|
135
|
+
return [2 /*return*/, this.response
|
|
136
|
+
// allow request to async succeed through lambda context
|
|
137
|
+
];
|
|
138
|
+
// allow request to async succeed through lambda context
|
|
139
|
+
return [2 /*return*/, null];
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
//Executions
|
|
145
|
+
Transaction.prototype.iexecute = function (executionFunc) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
147
|
+
var executionFailed, _a, e_1;
|
|
148
|
+
return __generator(this, function (_b) {
|
|
149
|
+
switch (_b.label) {
|
|
150
|
+
case 0:
|
|
151
|
+
executionFailed = true //failed til we say no!
|
|
152
|
+
;
|
|
153
|
+
_b.label = 1;
|
|
154
|
+
case 1:
|
|
155
|
+
_b.trys.push([1, 8, , 10]);
|
|
156
|
+
//Execute
|
|
157
|
+
this.logger.debug('Starting main request code');
|
|
158
|
+
_a = this;
|
|
159
|
+
return [4 /*yield*/, executionFunc(this)
|
|
160
|
+
//Answer client
|
|
161
|
+
];
|
|
162
|
+
case 2:
|
|
163
|
+
_a.response = _b.sent();
|
|
164
|
+
if (!(this.response && this.response instanceof Response_1.default)) return [3 /*break*/, 4];
|
|
165
|
+
return [4 /*yield*/, this.response.build(this.context, this, this.syncReturn)];
|
|
166
|
+
case 3:
|
|
167
|
+
_b.sent();
|
|
168
|
+
executionFailed = !!(this.response.getBody() && this.response.getBody()['rollback']);
|
|
169
|
+
return [3 /*break*/, 7];
|
|
170
|
+
case 4:
|
|
171
|
+
if (!(this.syncReturn && this.response)) return [3 /*break*/, 5];
|
|
172
|
+
this.logger.log('Sync return with different response object');
|
|
173
|
+
this.logger.debug(this.response);
|
|
174
|
+
executionFailed = false;
|
|
175
|
+
return [3 /*break*/, 7];
|
|
176
|
+
case 5:
|
|
177
|
+
this.response = this.getErrorResponse(Globals_1.default.ErrorResponseInvalidServerResponse, Globals_1.default.ErrorCode_APIError);
|
|
178
|
+
return [4 /*yield*/, this.response.build(this.context, this, this.syncReturn)];
|
|
179
|
+
case 6:
|
|
180
|
+
_b.sent();
|
|
181
|
+
this.logger.error('Invalid response object from main request code.');
|
|
182
|
+
_b.label = 7;
|
|
183
|
+
case 7: return [3 /*break*/, 10];
|
|
184
|
+
case 8:
|
|
185
|
+
e_1 = _b.sent();
|
|
186
|
+
/*EXECUTION FAIL*/
|
|
187
|
+
this.logger.error('Exception when executing main request code.');
|
|
188
|
+
this.logger.exception(e_1);
|
|
189
|
+
//retrow?
|
|
190
|
+
if (this.retrowErrors)
|
|
191
|
+
throw e_1;
|
|
192
|
+
//envelope exception?
|
|
193
|
+
this.response = this.getErrorResponse(Globals_1.default.ErrorResponseUnhandledError, Globals_1.default.ErrorCode_APIError);
|
|
194
|
+
return [4 /*yield*/, this.response.build(this.context, this, this.syncReturn)];
|
|
195
|
+
case 9:
|
|
196
|
+
_b.sent();
|
|
197
|
+
return [3 /*break*/, 10];
|
|
198
|
+
case 10: return [2 /*return*/, executionFailed];
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Retrieves a database transaction for the specified database configuration.
|
|
205
|
+
* @async
|
|
206
|
+
* @param {DbConfig<S>} config - The configuration object for the database.
|
|
207
|
+
* @returns {Promise<DatabaseTransactionType<S>>} A promise that resolves to the database transaction.
|
|
208
|
+
*/
|
|
209
|
+
Transaction.prototype.getDbTransaction = function (config) {
|
|
210
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
211
|
+
var db, dbTrans;
|
|
212
|
+
return __generator(this, function (_a) {
|
|
213
|
+
switch (_a.label) {
|
|
214
|
+
case 0:
|
|
215
|
+
db = this.databaseManager.create(config);
|
|
216
|
+
return [4 /*yield*/, db.transaction()];
|
|
217
|
+
case 1:
|
|
218
|
+
dbTrans = _a.sent();
|
|
219
|
+
this.transactions.push(dbTrans);
|
|
220
|
+
return [2 /*return*/, dbTrans];
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
Transaction.prototype.executeDBTransactions = function (safeExecution) {
|
|
226
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
227
|
+
var execFailed, _a, _b, transaction, e_2, e_3_1, e_4, _c, _d, transaction, e_5, e_6_1;
|
|
228
|
+
var e_3, _e, e_6, _f;
|
|
229
|
+
return __generator(this, function (_g) {
|
|
230
|
+
switch (_g.label) {
|
|
231
|
+
case 0:
|
|
232
|
+
_g.trys.push([0, 12, , 23]);
|
|
233
|
+
return [4 /*yield*/, safeExecution()];
|
|
234
|
+
case 1:
|
|
235
|
+
execFailed = _g.sent();
|
|
236
|
+
_g.label = 2;
|
|
237
|
+
case 2:
|
|
238
|
+
_g.trys.push([2, 9, 10, 11]);
|
|
239
|
+
_a = __values(__spreadArray([], __read(this.transactions), false).reverse()), _b = _a.next();
|
|
240
|
+
_g.label = 3;
|
|
241
|
+
case 3:
|
|
242
|
+
if (!!_b.done) return [3 /*break*/, 8];
|
|
243
|
+
transaction = _b.value;
|
|
244
|
+
_g.label = 4;
|
|
245
|
+
case 4:
|
|
246
|
+
_g.trys.push([4, 6, , 7]);
|
|
247
|
+
return [4 /*yield*/, transaction[execFailed ? 'closeFailure' : 'closeSuccess']()];
|
|
248
|
+
case 5:
|
|
249
|
+
_g.sent();
|
|
250
|
+
return [3 /*break*/, 7];
|
|
251
|
+
case 6:
|
|
252
|
+
e_2 = _g.sent();
|
|
253
|
+
// TODO: should we keep committing transactions even if one fails?
|
|
254
|
+
this.logger.error('Exception when closing DB transactions after success.');
|
|
255
|
+
this.logger.exception(e_2);
|
|
256
|
+
return [3 /*break*/, 7];
|
|
257
|
+
case 7:
|
|
258
|
+
_b = _a.next();
|
|
259
|
+
return [3 /*break*/, 3];
|
|
260
|
+
case 8: return [3 /*break*/, 11];
|
|
261
|
+
case 9:
|
|
262
|
+
e_3_1 = _g.sent();
|
|
263
|
+
e_3 = { error: e_3_1 };
|
|
264
|
+
return [3 /*break*/, 11];
|
|
265
|
+
case 10:
|
|
266
|
+
try {
|
|
267
|
+
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
268
|
+
}
|
|
269
|
+
finally { if (e_3) throw e_3.error; }
|
|
270
|
+
return [7 /*endfinally*/];
|
|
271
|
+
case 11: return [3 /*break*/, 23];
|
|
272
|
+
case 12:
|
|
273
|
+
e_4 = _g.sent();
|
|
274
|
+
_g.label = 13;
|
|
275
|
+
case 13:
|
|
276
|
+
_g.trys.push([13, 20, 21, 22]);
|
|
277
|
+
_c = __values(__spreadArray([], __read(this.transactions), false).reverse()), _d = _c.next();
|
|
278
|
+
_g.label = 14;
|
|
279
|
+
case 14:
|
|
280
|
+
if (!!_d.done) return [3 /*break*/, 19];
|
|
281
|
+
transaction = _d.value;
|
|
282
|
+
_g.label = 15;
|
|
283
|
+
case 15:
|
|
284
|
+
_g.trys.push([15, 17, , 18]);
|
|
285
|
+
return [4 /*yield*/, transaction.closeFailure()];
|
|
286
|
+
case 16:
|
|
287
|
+
_g.sent();
|
|
288
|
+
return [3 /*break*/, 18];
|
|
289
|
+
case 17:
|
|
290
|
+
e_5 = _g.sent();
|
|
291
|
+
this.logger.error('Exception when closing DB transactions after failure.');
|
|
292
|
+
this.logger.exception(e_5);
|
|
293
|
+
return [3 /*break*/, 18];
|
|
294
|
+
case 18:
|
|
295
|
+
_d = _c.next();
|
|
296
|
+
return [3 /*break*/, 14];
|
|
297
|
+
case 19: return [3 /*break*/, 22];
|
|
298
|
+
case 20:
|
|
299
|
+
e_6_1 = _g.sent();
|
|
300
|
+
e_6 = { error: e_6_1 };
|
|
301
|
+
return [3 /*break*/, 22];
|
|
302
|
+
case 21:
|
|
303
|
+
try {
|
|
304
|
+
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
305
|
+
}
|
|
306
|
+
finally { if (e_6) throw e_6.error; }
|
|
307
|
+
return [7 /*endfinally*/];
|
|
308
|
+
case 22:
|
|
309
|
+
this.logger.error('Exception when executing DB transactions.');
|
|
310
|
+
this.logger.log(e_4.stack);
|
|
311
|
+
//retrow?
|
|
312
|
+
if (this.retrowErrors)
|
|
313
|
+
throw e_4;
|
|
314
|
+
return [3 /*break*/, 23];
|
|
315
|
+
case 23: return [2 /*return*/];
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
};
|
|
320
|
+
Transaction.prototype.executeLoggerFlush = function (safeExecution) {
|
|
321
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
322
|
+
var e_7;
|
|
323
|
+
return __generator(this, function (_a) {
|
|
324
|
+
switch (_a.label) {
|
|
325
|
+
case 0:
|
|
326
|
+
_a.trys.push([0, 2, 3, 4]);
|
|
327
|
+
return [4 /*yield*/, safeExecution()];
|
|
328
|
+
case 1:
|
|
329
|
+
_a.sent();
|
|
330
|
+
return [3 /*break*/, 4];
|
|
331
|
+
case 2:
|
|
332
|
+
e_7 = _a.sent();
|
|
333
|
+
this.logger.error('Exception when flushing logs.');
|
|
334
|
+
this.logger.exception(e_7);
|
|
335
|
+
//retrow?
|
|
336
|
+
if (this.retrowErrors)
|
|
337
|
+
throw e_7;
|
|
338
|
+
return [3 /*break*/, 4];
|
|
339
|
+
case 3:
|
|
340
|
+
this.logger.debug('Transaction ended');
|
|
341
|
+
return [7 /*endfinally*/];
|
|
342
|
+
case 4: return [2 /*return*/];
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
});
|
|
346
|
+
};
|
|
347
|
+
/* Response support */
|
|
348
|
+
Transaction.prototype.getErrorResponse = function (error, code) {
|
|
349
|
+
return Response_1.default.BadRequestResponseWithRollback(error, code);
|
|
350
|
+
};
|
|
351
|
+
return Transaction;
|
|
352
|
+
}());
|
|
353
|
+
exports.default = Transaction;
|
|
354
|
+
//# sourceMappingURL=Transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/BaseEvent/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ${1:Description placeholder}
|
|
3
|
+
*
|
|
4
|
+
* @export
|
|
5
|
+
* @typedef {ConfigurationSchema}
|
|
6
|
+
*/
|
|
7
|
+
export type ConfigurationSchema = {
|
|
8
|
+
[name: string]: {
|
|
9
|
+
isLocal?: boolean;
|
|
10
|
+
isRemote?: boolean;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
cachingPolicy?: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* ${1:Description placeholder}
|
|
17
|
+
*
|
|
18
|
+
* @typedef {ExtractRemote}
|
|
19
|
+
* @template Type
|
|
20
|
+
*/
|
|
21
|
+
type ExtractRemote<Type> = {
|
|
22
|
+
[Property in keyof Type]-?: Type[Property] extends {
|
|
23
|
+
isRemote: true;
|
|
24
|
+
} ? Property : null;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* ${1:Description placeholder}
|
|
28
|
+
*
|
|
29
|
+
* @typedef {ExtractLocal}
|
|
30
|
+
* @template Type
|
|
31
|
+
*/
|
|
32
|
+
type ExtractLocal<Type> = {
|
|
33
|
+
[Property in keyof Type]-?: Type[Property] extends {
|
|
34
|
+
isLocal: true;
|
|
35
|
+
} ? Property : null;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* ${1:Description placeholder}
|
|
39
|
+
*
|
|
40
|
+
* @typedef {OmitKeysByValueType}
|
|
41
|
+
* @template T
|
|
42
|
+
* @template U
|
|
43
|
+
*/
|
|
44
|
+
type OmitKeysByValueType<T, U> = {
|
|
45
|
+
[P in keyof T]: T[P] extends U ? never : P;
|
|
46
|
+
}[keyof T];
|
|
47
|
+
/**
|
|
48
|
+
* ${1:Description placeholder}
|
|
49
|
+
*
|
|
50
|
+
* @typedef {OmitByValueType}
|
|
51
|
+
* @template T
|
|
52
|
+
* @template V
|
|
53
|
+
*/
|
|
54
|
+
type OmitByValueType<T, V> = T extends infer _ ? {
|
|
55
|
+
[key in OmitKeysByValueType<T, V>]: T[key];
|
|
56
|
+
} : never;
|
|
57
|
+
/**
|
|
58
|
+
* ${1:Description placeholder}
|
|
59
|
+
*
|
|
60
|
+
* @export
|
|
61
|
+
* @class Configuration
|
|
62
|
+
* @typedef {Configuration}
|
|
63
|
+
* @template {ConfigurationSchema} T
|
|
64
|
+
*/
|
|
65
|
+
export default class Configuration<T extends ConfigurationSchema> {
|
|
66
|
+
/**
|
|
67
|
+
* ${1:Description placeholder}
|
|
68
|
+
*
|
|
69
|
+
* @private
|
|
70
|
+
* @readonly
|
|
71
|
+
* @type {T}
|
|
72
|
+
*/
|
|
73
|
+
private readonly schema;
|
|
74
|
+
/**
|
|
75
|
+
* ${1:Description placeholder}
|
|
76
|
+
*
|
|
77
|
+
* @private
|
|
78
|
+
* @readonly
|
|
79
|
+
* @type {string}
|
|
80
|
+
*/
|
|
81
|
+
private readonly remotePrefix;
|
|
82
|
+
/**
|
|
83
|
+
* Creates an instance of Configuration.
|
|
84
|
+
*
|
|
85
|
+
* @constructor
|
|
86
|
+
* @param {T} schema
|
|
87
|
+
* @param {string} remotePrefix
|
|
88
|
+
*/
|
|
89
|
+
constructor(schema: T, remotePrefix: string);
|
|
90
|
+
/**
|
|
91
|
+
* ${1:Description placeholder}
|
|
92
|
+
*
|
|
93
|
+
* @public
|
|
94
|
+
* @param {keyof OmitByValueType<ExtractLocal<T>, null>} propName
|
|
95
|
+
* @returns {*}
|
|
96
|
+
*/
|
|
97
|
+
get(propName: keyof OmitByValueType<ExtractLocal<T>, null>): any;
|
|
98
|
+
/**
|
|
99
|
+
* ${1:Description placeholder}
|
|
100
|
+
*
|
|
101
|
+
* @public
|
|
102
|
+
* @async
|
|
103
|
+
* @param {keyof OmitByValueType<ExtractRemote<T>, null>} propName
|
|
104
|
+
* @returns {Promise<any>}
|
|
105
|
+
*/
|
|
106
|
+
asyncGet(propName: keyof OmitByValueType<ExtractRemote<T>, null>): Promise<any>;
|
|
107
|
+
/**
|
|
108
|
+
* ${1:Description placeholder}
|
|
109
|
+
*
|
|
110
|
+
* @private
|
|
111
|
+
* @param {string} valueKey
|
|
112
|
+
* @returns {*}
|
|
113
|
+
*/
|
|
114
|
+
private getCachedValue;
|
|
115
|
+
/**
|
|
116
|
+
* ${1:Description placeholder}
|
|
117
|
+
*
|
|
118
|
+
* @private
|
|
119
|
+
* @param {string} valueKey
|
|
120
|
+
* @param {*} value
|
|
121
|
+
* @param {string} [policy="1d"]
|
|
122
|
+
*/
|
|
123
|
+
private cacheValue;
|
|
124
|
+
/**
|
|
125
|
+
* ${1:Description placeholder}
|
|
126
|
+
*
|
|
127
|
+
* @private
|
|
128
|
+
*/
|
|
129
|
+
private resetCache;
|
|
130
|
+
}
|
|
131
|
+
export {};
|