ismx-nexo-node-app 0.3.24
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/dist/js/api/Service.js +45 -0
- package/dist/js/api/ServiceRest.js +33 -0
- package/dist/js/api/ServiceRestFormal.js +97 -0
- package/dist/js/api/ServiceRestFormalTemplate.js +127 -0
- package/dist/js/business/Business.js +5 -0
- package/dist/js/business/BusinessErrors.js +101 -0
- package/dist/js/business/BusinessLogger.js +9 -0
- package/dist/js/business/BusinessProxy.js +90 -0
- package/dist/js/business/BusinessServer.js +97 -0
- package/dist/js/business/BusinessState.js +5 -0
- package/dist/js/business/BusinessThread.js +23 -0
- package/dist/js/business/utils/CryptoUtils.js +30 -0
- package/dist/js/business/utils/NumberUtils.js +8 -0
- package/dist/js/business/utils/StringUtils.js +20 -0
- package/dist/js/index.js +56 -0
- package/dist/js/repository/Repository.js +5 -0
- package/dist/js/repository/RepositoryPostgres.js +215 -0
- package/dist/js/repository/RepositoryRest.js +55 -0
- package/dist/js/repository/RepositoryRestFormal.js +46 -0
- package/dist/js/repository/utils/PostgresUtils.js +51 -0
- package/dist/js/repository/utils/QueryUtils.js +13 -0
- package/dist/types/api/Service.d.ts +45 -0
- package/dist/types/api/ServiceRest.d.ts +6 -0
- package/dist/types/api/ServiceRestFormal.d.ts +23 -0
- package/dist/types/api/ServiceRestFormalTemplate.d.ts +40 -0
- package/dist/types/business/Business.d.ts +2 -0
- package/dist/types/business/BusinessErrors.d.ts +39 -0
- package/dist/types/business/BusinessLogger.d.ts +3 -0
- package/dist/types/business/BusinessProxy.d.ts +15 -0
- package/dist/types/business/BusinessServer.d.ts +15 -0
- package/dist/types/business/BusinessState.d.ts +2 -0
- package/dist/types/business/BusinessThread.d.ts +8 -0
- package/dist/types/business/utils/CryptoUtils.d.ts +5 -0
- package/dist/types/business/utils/NumberUtils.d.ts +3 -0
- package/dist/types/business/utils/StringUtils.d.ts +5 -0
- package/dist/types/index.d.ts +35 -0
- package/dist/types/repository/Repository.d.ts +2 -0
- package/dist/types/repository/RepositoryPostgres.d.ts +75 -0
- package/dist/types/repository/RepositoryRest.d.ts +17 -0
- package/dist/types/repository/RepositoryRestFormal.d.ts +7 -0
- package/dist/types/repository/utils/PostgresUtils.d.ts +17 -0
- package/dist/types/repository/utils/QueryUtils.d.ts +5 -0
- package/package.json +35 -0
- package/src/main/node/api/Service.ts +55 -0
- package/src/main/node/api/ServiceRest.ts +19 -0
- package/src/main/node/api/ServiceRestFormal.ts +58 -0
- package/src/main/node/api/ServiceRestFormalTemplate.ts +133 -0
- package/src/main/node/business/Business.ts +3 -0
- package/src/main/node/business/BusinessErrors.ts +94 -0
- package/src/main/node/business/BusinessLogger.ts +6 -0
- package/src/main/node/business/BusinessProxy.ts +57 -0
- package/src/main/node/business/BusinessServer.ts +76 -0
- package/src/main/node/business/BusinessState.ts +4 -0
- package/src/main/node/business/BusinessThread.ts +19 -0
- package/src/main/node/business/utils/CryptoUtils.ts +32 -0
- package/src/main/node/business/utils/NumberUtils.ts +6 -0
- package/src/main/node/business/utils/StringUtils.ts +20 -0
- package/src/main/node/index.ts +45 -0
- package/src/main/node/repository/Repository.ts +3 -0
- package/src/main/node/repository/RepositoryPostgres.ts +246 -0
- package/src/main/node/repository/RepositoryRest.ts +70 -0
- package/src/main/node/repository/RepositoryRestFormal.ts +37 -0
- package/src/main/node/repository/utils/PostgresUtils.ts +59 -0
- package/src/main/node/repository/utils/QueryUtils.ts +10 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.HttpResponse = void 0;
|
|
13
|
+
class HttpResponse {
|
|
14
|
+
static ok(content) {
|
|
15
|
+
let response = new HttpResponse();
|
|
16
|
+
response.content = content;
|
|
17
|
+
response.httpCode = 200;
|
|
18
|
+
return response;
|
|
19
|
+
}
|
|
20
|
+
static ko(httpCode, content) {
|
|
21
|
+
let response = new HttpResponse();
|
|
22
|
+
response.content = content;
|
|
23
|
+
response.httpCode = httpCode;
|
|
24
|
+
return response;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.HttpResponse = HttpResponse;
|
|
28
|
+
class Service {
|
|
29
|
+
constructor(method, endpoint = "/") {
|
|
30
|
+
this.method = method;
|
|
31
|
+
this.endpoint = endpoint;
|
|
32
|
+
Service.services.push(this);
|
|
33
|
+
}
|
|
34
|
+
serve(request) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
return HttpResponse.ok({});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
static clone(request, clone) {
|
|
40
|
+
var _a, _b, _c;
|
|
41
|
+
return { id: request.id, url: request.url, method: request.method, timestamp: request.timestamp, params: (_a = clone.params) !== null && _a !== void 0 ? _a : {}, query: (_b = clone.query) !== null && _b !== void 0 ? _b : {}, body: clone.body, headers: (_c = clone.headers) !== null && _c !== void 0 ? _c : {} };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
Service.services = [];
|
|
45
|
+
exports.default = Service;
|
|
@@ -0,0 +1,33 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const Service_1 = __importDefault(require("./Service"));
|
|
16
|
+
class ServiceRest extends Service_1.default {
|
|
17
|
+
constructor(method, endpoint = "/") {
|
|
18
|
+
super(method, endpoint);
|
|
19
|
+
}
|
|
20
|
+
serve(request) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
let response = yield this.serveRest(request);
|
|
23
|
+
response.headers = { "Content-Type": "application/json" };
|
|
24
|
+
return response;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
serveRest(request) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return {};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.default = ServiceRest;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const Service_1 = __importStar(require("./Service"));
|
|
39
|
+
const ServiceRest_1 = __importDefault(require("./ServiceRest"));
|
|
40
|
+
class ServiceRestFormal extends ServiceRest_1.default {
|
|
41
|
+
constructor(method, endpoint = "/") {
|
|
42
|
+
super(method, endpoint);
|
|
43
|
+
}
|
|
44
|
+
serveRest(request) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
try {
|
|
47
|
+
let response = yield this.serveRestFormal(request);
|
|
48
|
+
let content = ({ code: "0", description: "Service execution OK", data: response.content });
|
|
49
|
+
return Object.assign({}, response, { content });
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
let content = ({ code: "-1", description: "Internal server error", debug: error.message });
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
serveRestFormal(request) {
|
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
return Service_1.HttpResponse.ok(null);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
unwrap(request) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
return ServiceRestFormal.unwrap(request);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
fullSelect(request, api) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
return ServiceRestFormal.fullSelect(request, api);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static unwrap(request) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
var _a;
|
|
75
|
+
let response = yield request;
|
|
76
|
+
if (response.httpCode !== 200)
|
|
77
|
+
throw response.content;
|
|
78
|
+
else
|
|
79
|
+
return (_a = response.content) === null || _a === void 0 ? void 0 : _a.data;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
static fullSelect(request, api) {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
return api.select.serve(request).then((result) => {
|
|
85
|
+
var _a;
|
|
86
|
+
let select = (_a = result.content) === null || _a === void 0 ? void 0 : _a.data;
|
|
87
|
+
let requests = select === null || select === void 0 ? void 0 : select.map((selectId) => __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
var _a;
|
|
89
|
+
let result = yield api.full.serve(Service_1.default.clone(request, { query: { id: selectId } }));
|
|
90
|
+
return (_a = result.content) === null || _a === void 0 ? void 0 : _a.data;
|
|
91
|
+
}));
|
|
92
|
+
return Promise.all(requests !== null && requests !== void 0 ? requests : []);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.default = ServiceRestFormal;
|
|
@@ -0,0 +1,127 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const Service_1 = require("./Service");
|
|
16
|
+
const ServiceRestFormal_1 = __importDefault(require("./ServiceRestFormal"));
|
|
17
|
+
class ServiceRestFormalTemplate {
|
|
18
|
+
constructor(resource, tableName) {
|
|
19
|
+
this.indexer = "id";
|
|
20
|
+
this.unwrap = ServiceRestFormal_1.default.unwrap;
|
|
21
|
+
this.fullSelect = ServiceRestFormal_1.default.fullSelect;
|
|
22
|
+
this.resource = resource;
|
|
23
|
+
this.tableName = tableName;
|
|
24
|
+
this.get = new ServiceRestFormal_1.default("GET", `${resource}`);
|
|
25
|
+
this.get.serveRestFormal = this.serveGet.bind(this);
|
|
26
|
+
this.getList = new ServiceRestFormal_1.default("GET", `${resource}/list`);
|
|
27
|
+
this.getList.serveRestFormal = this.serveGetList.bind(this);
|
|
28
|
+
this.postList = new ServiceRestFormal_1.default("POST", `${resource}/list`);
|
|
29
|
+
this.postList.serveRestFormal = this.servePostList.bind(this);
|
|
30
|
+
this.page = new ServiceRestFormal_1.default("GET", `${resource}/page`);
|
|
31
|
+
this.page.serveRestFormal = this.servePage.bind(this);
|
|
32
|
+
this.map = new ServiceRestFormal_1.default("GET", `${resource}/map`);
|
|
33
|
+
this.map.serveRestFormal = this.serveMap.bind(this);
|
|
34
|
+
this.select = new ServiceRestFormal_1.default("GET", `${resource}/select`);
|
|
35
|
+
this.select.serveRestFormal = this.serveSelect.bind(this);
|
|
36
|
+
this.exist = new ServiceRestFormal_1.default("GET", `${resource}/exist`);
|
|
37
|
+
this.exist.serveRestFormal = this.serveExist.bind(this);
|
|
38
|
+
this.count = new ServiceRestFormal_1.default("GET", `${resource}/count`);
|
|
39
|
+
this.count.serveRestFormal = this.serveCount.bind(this);
|
|
40
|
+
this.post = new ServiceRestFormal_1.default("POST", `${resource}`);
|
|
41
|
+
this.post.serveRestFormal = this.servePost.bind(this);
|
|
42
|
+
this.put = new ServiceRestFormal_1.default("PUT", `${resource}`);
|
|
43
|
+
this.put.serveRestFormal = this.servePut.bind(this);
|
|
44
|
+
this.del = new ServiceRestFormal_1.default("DELETE", `${resource}`);
|
|
45
|
+
this.del.serveRestFormal = this.serveDel.bind(this);
|
|
46
|
+
}
|
|
47
|
+
serveGet(request) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
let id = this.errors.getQuery("id", request.query);
|
|
50
|
+
let result = yield this.database.one(this.tableName, id);
|
|
51
|
+
return Service_1.HttpResponse.ok(result);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
serveGetList(request) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
return Service_1.HttpResponse.ok(yield this.database.find(this.tableName, Object.assign({}, request.query)));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
servePostList(request) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
let list = request.body;
|
|
62
|
+
if (!(list instanceof Array))
|
|
63
|
+
throw new Error("body must be a list");
|
|
64
|
+
return Service_1.HttpResponse.ok(this.database.addAll(this.tableName, list));
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
servePage(request) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
let maxResults = this.errors.getQuery("maxResults", request.query);
|
|
70
|
+
let maxResultsNum = this.errors.isType("maxResults", maxResults, "number", Number.parseInt);
|
|
71
|
+
let pageNumber = this.errors.getQuery("pageNumber", request.query);
|
|
72
|
+
let pageNumberNum = this.errors.isType("pageNumber", pageNumber, "number", Number.parseInt);
|
|
73
|
+
let results = yield this.database.page(this.tableName, "timestamp", maxResultsNum, pageNumberNum);
|
|
74
|
+
return Service_1.HttpResponse.ok(results);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
serveMap(request) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
let results = yield this.database.find(this.tableName, Object.assign({}, request.query));
|
|
80
|
+
let response = {};
|
|
81
|
+
for (let result of results) {
|
|
82
|
+
let key = result[this.indexer];
|
|
83
|
+
if (!key)
|
|
84
|
+
return Service_1.HttpResponse.ok({});
|
|
85
|
+
else
|
|
86
|
+
response[key] = result;
|
|
87
|
+
}
|
|
88
|
+
return Service_1.HttpResponse.ok(response);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
serveSelect(request) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
var _a, _b, _c;
|
|
94
|
+
let selection = (_b = (_a = request.query) === null || _a === void 0 ? void 0 : _a["selection"]) !== null && _b !== void 0 ? _b : this.indexer;
|
|
95
|
+
(_c = request.query) === null || _c === void 0 ? true : delete _c["selection"];
|
|
96
|
+
let select = yield this.database.select(this.tableName, selection, Object.assign({}, request.query));
|
|
97
|
+
return Service_1.HttpResponse.ok(select);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
serveExist(request) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
return Service_1.HttpResponse.ok((yield this.database.count(this.tableName, Object.assign({}, request.query))) > 0);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
serveCount(request) {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
return Service_1.HttpResponse.ok((yield this.database.count(this.tableName, Object.assign({}, request.query))));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
servePost(request) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
let entity = this.database.add(this.tableName, request.body);
|
|
113
|
+
return Service_1.HttpResponse.ok(entity);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
servePut(request) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
return Service_1.HttpResponse.ok("not implemented yet");
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
serveDel(request) {
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
return Service_1.HttpResponse.ok("not implemented yet");
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.default = ServiceRestFormalTemplate;
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
class BusinessErrors {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.errors = {};
|
|
15
|
+
}
|
|
16
|
+
init() {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
18
|
+
}
|
|
19
|
+
setErrors(errors) {
|
|
20
|
+
this.errors = errors;
|
|
21
|
+
}
|
|
22
|
+
get(code, ...params) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
let error = (_a = this.errors[code]) !== null && _a !== void 0 ? _a : this.getFallback();
|
|
25
|
+
let result = Object.assign({}, error);
|
|
26
|
+
for (const p in params)
|
|
27
|
+
result.description = (_b = result.description) === null || _b === void 0 ? void 0 : _b.replace(`\${${p}}`, params[p]);
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
except(code, ...params) {
|
|
31
|
+
let error = this.get(code, ...params);
|
|
32
|
+
//this.onExcept?.(error)
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
notFound(endpoint) {
|
|
36
|
+
this.except("0004", endpoint);
|
|
37
|
+
}
|
|
38
|
+
getQuery(key, query) {
|
|
39
|
+
if (!query || !query[key])
|
|
40
|
+
this.except("0011", key);
|
|
41
|
+
return query[key];
|
|
42
|
+
}
|
|
43
|
+
eitherQuery(keys, query) {
|
|
44
|
+
let result = undefined;
|
|
45
|
+
for (let i = 0; i < keys.length; i++) {
|
|
46
|
+
let key = keys[i];
|
|
47
|
+
if (query[key] !== undefined) {
|
|
48
|
+
if (!result)
|
|
49
|
+
result = { key: key, value: query[key], index: i };
|
|
50
|
+
else
|
|
51
|
+
this.except("0017", keys.join(" or "));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!result)
|
|
55
|
+
this.except("0016", keys.join(" or "));
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
getPath(key, path) {
|
|
59
|
+
if (!path[key])
|
|
60
|
+
this.except("0012", key);
|
|
61
|
+
return path[key];
|
|
62
|
+
}
|
|
63
|
+
getBody(body) {
|
|
64
|
+
if (!body)
|
|
65
|
+
this.except("0013");
|
|
66
|
+
return body;
|
|
67
|
+
}
|
|
68
|
+
getHeaders(key, headers) {
|
|
69
|
+
if (!headers[key])
|
|
70
|
+
this.except("0015", key);
|
|
71
|
+
return headers[key];
|
|
72
|
+
}
|
|
73
|
+
isType(key, value, type, assertion) {
|
|
74
|
+
try {
|
|
75
|
+
if (!assertion(value))
|
|
76
|
+
throw new Error();
|
|
77
|
+
}
|
|
78
|
+
catch (_a) {
|
|
79
|
+
this.except("0021", key, type);
|
|
80
|
+
}
|
|
81
|
+
return assertion(value);
|
|
82
|
+
}
|
|
83
|
+
exists(type, key, value, object) {
|
|
84
|
+
if (!object)
|
|
85
|
+
this.except("0030", type, key, value);
|
|
86
|
+
return object;
|
|
87
|
+
}
|
|
88
|
+
isRegex(key, value, regex) {
|
|
89
|
+
if (!new RegExp(regex).test(value))
|
|
90
|
+
this.except("0022", key);
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
isDate(key, value, format) {
|
|
94
|
+
this.except("0023", key, format);
|
|
95
|
+
return new Date(value);
|
|
96
|
+
}
|
|
97
|
+
getFallback() {
|
|
98
|
+
return { id: "-1", description: "Internal Server error", code: "-1", httpCode: 500 };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.default = BusinessErrors;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
36
|
+
class BusinessProxy {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.modules = {};
|
|
39
|
+
}
|
|
40
|
+
setModules(modules) {
|
|
41
|
+
this.modules = modules;
|
|
42
|
+
}
|
|
43
|
+
callFormal(tag, method, endpoint, request) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
let response = yield this.call(tag, method, endpoint, request);
|
|
46
|
+
if ((response === null || response === void 0 ? void 0 : response.code) === "0")
|
|
47
|
+
return response.data;
|
|
48
|
+
else
|
|
49
|
+
throw response;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
call(tag, method, endpoint, request) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
let module = this.modules[tag];
|
|
55
|
+
if (!module)
|
|
56
|
+
throw new Error(`Module ${tag} does not exist`);
|
|
57
|
+
let headers = new node_fetch_1.Headers();
|
|
58
|
+
headers.set('Content-Type', 'application/json');
|
|
59
|
+
headers.set('Cache-Control', 'no-cache');
|
|
60
|
+
headers.set('Pragma', 'no-cache');
|
|
61
|
+
for (let header in request.headers)
|
|
62
|
+
headers.set(header, request.headers[header]);
|
|
63
|
+
let response = null;
|
|
64
|
+
try {
|
|
65
|
+
response = yield (0, node_fetch_1.default)(`${module.host}${endpoint}${this.map(request.query)}`, {
|
|
66
|
+
method: method,
|
|
67
|
+
body: method !== "GET" ? JSON.stringify(request.body) : undefined,
|
|
68
|
+
headers: headers,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
throw new Error(`Module ${tag} is not responding`);
|
|
73
|
+
}
|
|
74
|
+
if (response.ok)
|
|
75
|
+
return yield response.json();
|
|
76
|
+
else
|
|
77
|
+
throw yield response.json();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
map(query = {}) {
|
|
81
|
+
let queryString = "?";
|
|
82
|
+
for (const param in query) {
|
|
83
|
+
if (query[param] === undefined)
|
|
84
|
+
continue;
|
|
85
|
+
queryString += `${param}=${query[param]}&`;
|
|
86
|
+
}
|
|
87
|
+
return queryString;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.default = BusinessProxy;
|
|
@@ -0,0 +1,97 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const Service_1 = require("../api/Service");
|
|
16
|
+
const express_1 = __importDefault(require("express"));
|
|
17
|
+
const Business_1 = __importDefault(require("./Business"));
|
|
18
|
+
const cors_1 = __importDefault(require("cors"));
|
|
19
|
+
class BusinessServer extends Business_1.default {
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
this.app = (0, express_1.default)();
|
|
23
|
+
this.app.use(express_1.default.urlencoded({ extended: false }));
|
|
24
|
+
this.app.use(express_1.default.json());
|
|
25
|
+
this.app.use((0, cors_1.default)());
|
|
26
|
+
this.publish = this.publish.bind(this);
|
|
27
|
+
}
|
|
28
|
+
start(port) {
|
|
29
|
+
this.app.listen(port, this.onStarted);
|
|
30
|
+
}
|
|
31
|
+
setServices(services) {
|
|
32
|
+
services.forEach(this.publish);
|
|
33
|
+
}
|
|
34
|
+
publish(service) {
|
|
35
|
+
switch (service.method) {
|
|
36
|
+
case "GET":
|
|
37
|
+
this.app.get(service.endpoint, this.run(service));
|
|
38
|
+
break;
|
|
39
|
+
case "POST":
|
|
40
|
+
this.app.post(service.endpoint, this.run(service));
|
|
41
|
+
break;
|
|
42
|
+
case "PUT":
|
|
43
|
+
this.app.put(service.endpoint, this.run(service));
|
|
44
|
+
break;
|
|
45
|
+
case "DELETE":
|
|
46
|
+
this.app.delete(service.endpoint, this.run(service));
|
|
47
|
+
break;
|
|
48
|
+
case "PATCH":
|
|
49
|
+
this.app.patch(service.endpoint, this.run(service));
|
|
50
|
+
break;
|
|
51
|
+
case "*":
|
|
52
|
+
this.app.all(service.endpoint, this.run(service));
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
run(service) {
|
|
57
|
+
return (request, socket) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
59
|
+
let code;
|
|
60
|
+
let response = Service_1.HttpResponse.ko(500, "Internal server error");
|
|
61
|
+
// Asigna un valor único a la llamada de la API.
|
|
62
|
+
request.id = Math.ceil(Math.random() * 1000000).toString();
|
|
63
|
+
request.timestamp = new Date();
|
|
64
|
+
let indexParams = request.url.indexOf('?');
|
|
65
|
+
let endpoint = indexParams > 0 ? request.url.substring(0, indexParams) : request.url;
|
|
66
|
+
request.endpoint = !!endpoint ? endpoint : "/";
|
|
67
|
+
try {
|
|
68
|
+
try {
|
|
69
|
+
(_a = this.onRequest) === null || _a === void 0 ? void 0 : _a.call(this, request);
|
|
70
|
+
}
|
|
71
|
+
catch (e) { }
|
|
72
|
+
response = yield ((_b = service.serve) === null || _b === void 0 ? void 0 : _b.call(service, request));
|
|
73
|
+
response.httpCode = (_c = response.httpCode) !== null && _c !== void 0 ? _c : 200;
|
|
74
|
+
try {
|
|
75
|
+
response = ((_e = (_d = this.onResponse) === null || _d === void 0 ? void 0 : _d.call(this, request, response)) !== null && _e !== void 0 ? _e : response);
|
|
76
|
+
}
|
|
77
|
+
catch (e) { }
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
(_f = this.onError) === null || _f === void 0 ? void 0 : _f.call(this, request, error);
|
|
81
|
+
let debug = error.message;
|
|
82
|
+
if (!error.code)
|
|
83
|
+
error = { code: "-1", description: "Internal server error", debug };
|
|
84
|
+
let content = { code: error.code, description: error.description, debug };
|
|
85
|
+
response = Service_1.HttpResponse.ko(error.httpCode, content);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
socket.status((_g = response === null || response === void 0 ? void 0 : response.httpCode) !== null && _g !== void 0 ? _g : 500).send(response === null || response === void 0 ? void 0 : response.content);
|
|
89
|
+
try {
|
|
90
|
+
(_h = this.onEnd) === null || _h === void 0 ? void 0 : _h.call(this, request, response);
|
|
91
|
+
}
|
|
92
|
+
catch (e) { }
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.default = BusinessServer;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Business_1 = __importDefault(require("./Business"));
|
|
7
|
+
class BusinessThread extends Business_1.default {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
setTimeout(() => {
|
|
11
|
+
setInterval(() => {
|
|
12
|
+
try {
|
|
13
|
+
this.run();
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
this.onError();
|
|
17
|
+
}
|
|
18
|
+
}, this.interval());
|
|
19
|
+
}, this.delay());
|
|
20
|
+
}
|
|
21
|
+
onError() { }
|
|
22
|
+
}
|
|
23
|
+
exports.default = BusinessThread;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
7
|
+
class CryptoUtils {
|
|
8
|
+
static zeroPad(buf, blocksize) {
|
|
9
|
+
const pad = Buffer.alloc((blocksize - (buf.length % blocksize)) % blocksize, 0);
|
|
10
|
+
return Buffer.concat([buf, pad]);
|
|
11
|
+
}
|
|
12
|
+
static encrypt3DES(key, message) {
|
|
13
|
+
const keyBuf = Buffer.from(key, 'base64');
|
|
14
|
+
const iv = Buffer.alloc(8, 0);
|
|
15
|
+
const messageBuf = Buffer.from(message.toString(), 'utf8');
|
|
16
|
+
const paddedMessageBuf = CryptoUtils.zeroPad(messageBuf, 8);
|
|
17
|
+
const cipher = crypto_1.default.createCipheriv('des-ede3-cbc', keyBuf, iv);
|
|
18
|
+
cipher.setAutoPadding(false);
|
|
19
|
+
const encryptedBuf = Buffer.concat([
|
|
20
|
+
cipher.update(paddedMessageBuf), cipher.final()
|
|
21
|
+
]);
|
|
22
|
+
const maxLength = Math.ceil(messageBuf.length / 8) * 8;
|
|
23
|
+
return encryptedBuf.slice(0, maxLength);
|
|
24
|
+
}
|
|
25
|
+
static sha256Sign(merchantKey, orderId, encodedOrder) {
|
|
26
|
+
const orderKeyBuf = CryptoUtils.encrypt3DES(merchantKey, orderId);
|
|
27
|
+
return crypto_1.default.createHmac('sha256', orderKeyBuf).update(encodedOrder).digest('base64');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = CryptoUtils;
|