ismx-nexo-node-app 0.4.83 → 0.4.85

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.
@@ -154,16 +154,19 @@ class BusinessServer extends Business_1.default {
154
154
  }
155
155
  });
156
156
  }
157
- load(path) {
157
+ load(parent, path) {
158
158
  return __awaiter(this, void 0, void 0, function* () {
159
159
  const { readdir } = yield Promise.resolve().then(() => __importStar(require('fs/promises')));
160
160
  const pathModule = yield Promise.resolve().then(() => __importStar(require('path')));
161
161
  const { fileURLToPath } = yield Promise.resolve().then(() => __importStar(require('url')));
162
- const files = yield readdir(path);
162
+ // @ts-ignore
163
+ const __dirname = pathModule.dirname(fileURLToPath(parent));
164
+ const servicesPath = pathModule.join(__dirname, path);
165
+ const files = yield readdir(servicesPath);
163
166
  for (const file of files) {
164
167
  if (!file.endsWith('.ts') && !file.endsWith('.js'))
165
168
  continue;
166
- const modulePath = pathModule.join(path, file);
169
+ const modulePath = pathModule.join(servicesPath, file);
167
170
  const mod = yield Promise.resolve(`${modulePath}`).then(s => __importStar(require(s)));
168
171
  const ServiceClass = Object.values(mod)[0];
169
172
  // @ts-ignore
@@ -0,0 +1,92 @@
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 LoopbackBusiness_1 = __importDefault(require("./LoopbackBusiness"));
16
+ class FormalLoopbackBusiness extends LoopbackBusiness_1.default {
17
+ constructor() {
18
+ super();
19
+ }
20
+ get(tag_1) {
21
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
22
+ return this.call(tag, 'GET', '/', request);
23
+ });
24
+ }
25
+ list(tag_1) {
26
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
27
+ return this.call(tag, 'GET', '/list', request);
28
+ });
29
+ }
30
+ select(tag_1) {
31
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
32
+ return this.call(tag, 'GET', '/select', request);
33
+ });
34
+ }
35
+ count(tag_1) {
36
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
37
+ return this.call(tag, 'GET', '/count', request);
38
+ });
39
+ }
40
+ keymap(tag_1) {
41
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
42
+ return this.call(tag, 'GET', '/keymap', request);
43
+ });
44
+ }
45
+ map(tag_1) {
46
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
47
+ return this.call(tag, 'GET', '/map', request);
48
+ });
49
+ }
50
+ exist(tag_1) {
51
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
52
+ return this.call(tag, 'GET', '/exist', request);
53
+ });
54
+ }
55
+ post(tag_1) {
56
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
57
+ return this.call(tag, 'POST', '/', request);
58
+ });
59
+ }
60
+ put(tag_1) {
61
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
62
+ return this.call(tag, 'PUT', '/', request);
63
+ });
64
+ }
65
+ del(tag_1) {
66
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
67
+ return this.call(tag, 'DELETE', '/', request);
68
+ });
69
+ }
70
+ call(tag_1, method_1, endpoint_1) {
71
+ const _super = Object.create(null, {
72
+ loopback: { get: () => super.loopback }
73
+ });
74
+ return __awaiter(this, arguments, void 0, function* (tag, method, endpoint, request = {}) {
75
+ return this.deformalize(() => _super.loopback.call(this, method, `${tag}/${endpoint}`, request));
76
+ });
77
+ }
78
+ deformalize(call) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ let result = yield call();
81
+ if (result.ok) {
82
+ let wrapper = yield result.json();
83
+ return wrapper.data;
84
+ }
85
+ else {
86
+ const errorBody = yield result.json();
87
+ throw new Error(JSON.stringify(errorBody));
88
+ }
89
+ });
90
+ }
91
+ }
92
+ exports.default = FormalLoopbackBusiness;
@@ -0,0 +1,92 @@
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 ProxyBusiness_1 = __importDefault(require("./ProxyBusiness"));
16
+ class FormalProxyBusiness extends ProxyBusiness_1.default {
17
+ constructor() {
18
+ super();
19
+ }
20
+ get(tag_1) {
21
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
22
+ return this.call(tag, 'GET', '/', request);
23
+ });
24
+ }
25
+ list(tag_1) {
26
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
27
+ return this.call(tag, 'GET', '/list', request);
28
+ });
29
+ }
30
+ select(tag_1) {
31
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
32
+ return this.call(tag, 'GET', '/select', request);
33
+ });
34
+ }
35
+ count(tag_1) {
36
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
37
+ return this.call(tag, 'GET', '/count', request);
38
+ });
39
+ }
40
+ keymap(tag_1) {
41
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
42
+ return this.call(tag, 'GET', '/keymap', request);
43
+ });
44
+ }
45
+ map(tag_1) {
46
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
47
+ return this.call(tag, 'GET', '/map', request);
48
+ });
49
+ }
50
+ exist(tag_1) {
51
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
52
+ return this.call(tag, 'GET', '/exist', request);
53
+ });
54
+ }
55
+ post(tag_1) {
56
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
57
+ return this.call(tag, 'POST', '/', request);
58
+ });
59
+ }
60
+ put(tag_1) {
61
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
62
+ return this.call(tag, 'PUT', '/', request);
63
+ });
64
+ }
65
+ del(tag_1) {
66
+ return __awaiter(this, arguments, void 0, function* (tag, request = {}) {
67
+ return this.call(tag, 'DELETE', '/', request);
68
+ });
69
+ }
70
+ call(tag_1, method_1, endpoint_1) {
71
+ const _super = Object.create(null, {
72
+ call: { get: () => super.call }
73
+ });
74
+ return __awaiter(this, arguments, void 0, function* (tag, method, endpoint, request = {}) {
75
+ return this.deformalize(() => _super.call.call(this, tag, method, endpoint, request));
76
+ });
77
+ }
78
+ deformalize(call) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ let result = yield call();
81
+ if (result.ok) {
82
+ let wrapper = yield result.json();
83
+ return wrapper.data;
84
+ }
85
+ else {
86
+ const errorBody = yield result.json();
87
+ throw new Error(JSON.stringify(errorBody));
88
+ }
89
+ });
90
+ }
91
+ }
92
+ exports.default = FormalProxyBusiness;
@@ -0,0 +1,44 @@
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 ProxyBusiness_1 = __importDefault(require("./ProxyBusiness"));
16
+ class LoopbackBusiness extends ProxyBusiness_1.default {
17
+ constructor(loopback = "http://localhost") {
18
+ super();
19
+ this.modules = {
20
+ loopback: {
21
+ id: "loopback",
22
+ tag: "loopback",
23
+ host: loopback,
24
+ }
25
+ };
26
+ }
27
+ call(tag, method, endpoint, request) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return this.loopback(method, endpoint, request);
30
+ });
31
+ }
32
+ loopback(method, endpoint, request) {
33
+ const _super = Object.create(null, {
34
+ call: { get: () => super.call }
35
+ });
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ return _super.call.call(this, "loopback", endpoint, method, request);
38
+ });
39
+ }
40
+ setModules(modules) {
41
+ throw new Error("Cannot set modules in loopback proxy");
42
+ }
43
+ }
44
+ exports.default = LoopbackBusiness;
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const node_fetch_1 = __importStar(require("node-fetch"));
39
39
  const QueryUtils_1 = __importDefault(require("../repository/utils/QueryUtils"));
40
- class BusinessProxy {
40
+ class ProxyBusiness {
41
41
  constructor() {
42
42
  this.modules = {};
43
43
  this.onError = (error) => error;
@@ -67,8 +67,10 @@ class BusinessProxy {
67
67
  body = JSON.stringify(request.body);
68
68
  }
69
69
  // Realiza la llamada a la API con las cabeceras y la URL base de la llamada.
70
- return (0, node_fetch_1.default)(module.host + endpoint + QueryUtils_1.default.map(request.query), Object.assign(Object.assign({}, request), { method, body: method !== "GET" ? body : undefined, headers })).catch((error) => { throw this.onError(error); });
70
+ return (0, node_fetch_1.default)(module.host + endpoint + QueryUtils_1.default.map(request.query), Object.assign(Object.assign({}, request), { method, body: method !== "GET" ? body : undefined, headers })).catch((error) => {
71
+ throw this.onError(error);
72
+ });
71
73
  });
72
74
  }
73
75
  }
74
- exports.default = BusinessProxy;
76
+ exports.default = ProxyBusiness;
package/dist/js/index.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.RestUtils = exports.QueryUtils = exports.RepositoryRestFormalTemplate = exports.RepositoryRestFormal = exports.RepositoryRest = exports.RepositoryDatabasePostgres = exports.RepositoryDatabase = exports.Repository = exports.ArrayUtils = exports.StringUtils = exports.NumberUtils = exports.CryptoUtils = exports.DateUtils = exports.BusinessLogger = exports.FormalError = exports.BusinessErrors = exports.BusinessThreadState = exports.BusinessThread = exports.BusinessServer = exports.BusinessProxy = exports.BusinessState = exports.Business = exports.ColorUtils = exports.ServiceRestFormalTemplate = exports.ServiceRestFormal = exports.ServiceRest = exports.HttpResponse = exports.Service = void 0;
29
+ exports.RestUtils = exports.QueryUtils = exports.RepositoryRestFormalTemplate = exports.RepositoryRestFormal = exports.RepositoryRest = exports.RepositoryDatabasePostgres = exports.RepositoryDatabase = exports.Repository = exports.ArrayUtils = exports.StringUtils = exports.NumberUtils = exports.CryptoUtils = exports.DateUtils = exports.BusinessLogger = exports.FormalError = exports.BusinessErrors = exports.BusinessThreadState = exports.BusinessThread = exports.BusinessServer = exports.FormalProxyBusiness = exports.ProxyBusiness = exports.BusinessState = exports.Business = exports.ColorUtils = exports.ServiceRestFormalTemplate = exports.ServiceRestFormal = exports.ServiceRest = exports.HttpResponse = exports.Service = void 0;
30
30
  const Service_1 = __importStar(require("./api/Service"));
31
31
  class Service extends Service_1.default {
32
32
  }
@@ -59,10 +59,14 @@ const BusinessState_1 = __importDefault(require("./business/BusinessState"));
59
59
  class BusinessState extends BusinessState_1.default {
60
60
  }
61
61
  exports.BusinessState = BusinessState;
62
- const BusinessProxy_1 = __importDefault(require("./business/BusinessProxy"));
63
- class BusinessProxy extends BusinessProxy_1.default {
62
+ const ProxyBusiness_1 = __importDefault(require("./business/ProxyBusiness"));
63
+ class ProxyBusiness extends ProxyBusiness_1.default {
64
64
  }
65
- exports.BusinessProxy = BusinessProxy;
65
+ exports.ProxyBusiness = ProxyBusiness;
66
+ const FormalProxyBusiness_1 = __importDefault(require("./business/FormalProxyBusiness"));
67
+ class FormalProxyBusiness extends FormalProxyBusiness_1.default {
68
+ }
69
+ exports.FormalProxyBusiness = FormalProxyBusiness;
66
70
  const BusinessServer_1 = __importDefault(require("./business/BusinessServer"));
67
71
  class BusinessServer extends BusinessServer_1.default {
68
72
  }
@@ -20,5 +20,5 @@ export default class BusinessServer extends Business {
20
20
  setOnEnd(listener: (request: HttpRequest, response: HttpResponse) => any): void;
21
21
  private publish;
22
22
  private run;
23
- load(path: string): Promise<void>;
23
+ load(parent: string, path: string): Promise<void>;
24
24
  }
@@ -0,0 +1,21 @@
1
+ import { HttpRequest } from "../api/Service";
2
+ import LoopbackBusiness from "./LoopbackBusiness";
3
+ export default class FormalLoopbackBusiness extends LoopbackBusiness {
4
+ constructor();
5
+ get<Res>(tag: string, request?: HttpRequest): Promise<Res>;
6
+ list<Res>(tag: string, request?: HttpRequest): Promise<Res[]>;
7
+ select(tag: string, request?: HttpRequest): Promise<string[]>;
8
+ count(tag: string, request?: HttpRequest): Promise<number>;
9
+ keymap(tag: string, request?: HttpRequest): Promise<{
10
+ [key: string]: string;
11
+ }>;
12
+ map<Res>(tag: string, request?: HttpRequest): Promise<{
13
+ [key: string]: Res;
14
+ }>;
15
+ exist(tag: string, request?: HttpRequest): Promise<boolean>;
16
+ post<Res>(tag: string, request?: HttpRequest): Promise<Res>;
17
+ put<Res>(tag: string, request?: HttpRequest): Promise<Res>;
18
+ del<Res>(tag: string, request?: HttpRequest): Promise<Res>;
19
+ call<Res>(tag: string, method: string, endpoint: string, request?: HttpRequest): Promise<Res>;
20
+ private deformalize;
21
+ }
@@ -0,0 +1,21 @@
1
+ import { HttpRequest } from "../api/Service";
2
+ import ProxyBusiness from "./ProxyBusiness";
3
+ export default class FormalProxyBusiness extends ProxyBusiness {
4
+ constructor();
5
+ get<Res>(tag: string, request?: HttpRequest): Promise<Res>;
6
+ list<Res>(tag: string, request?: HttpRequest): Promise<Res[]>;
7
+ select(tag: string, request?: HttpRequest): Promise<string[]>;
8
+ count(tag: string, request?: HttpRequest): Promise<number>;
9
+ keymap(tag: string, request?: HttpRequest): Promise<{
10
+ [key: string]: string;
11
+ }>;
12
+ map<Res>(tag: string, request?: HttpRequest): Promise<{
13
+ [key: string]: Res;
14
+ }>;
15
+ exist(tag: string, request?: HttpRequest): Promise<boolean>;
16
+ post<Res>(tag: string, request?: HttpRequest): Promise<Res>;
17
+ put<Res>(tag: string, request?: HttpRequest): Promise<Res>;
18
+ del<Res>(tag: string, request?: HttpRequest): Promise<Res>;
19
+ call<Res>(tag: string, method: string, endpoint: string, request?: HttpRequest): Promise<Res>;
20
+ private deformalize;
21
+ }
@@ -0,0 +1,11 @@
1
+ import { HttpRequest } from "../api/Service";
2
+ import fetch from 'node-fetch';
3
+ import ProxyBusiness, { Module } from "./ProxyBusiness";
4
+ export default class LoopbackBusiness extends ProxyBusiness {
5
+ constructor(loopback?: string);
6
+ call<Req, Res>(tag: string, method: string, endpoint: string, request: HttpRequest<Req>): Promise<fetch.Response>;
7
+ loopback<Req, Res>(method: string, endpoint: string, request: HttpRequest<Req>): Promise<fetch.Response>;
8
+ setModules(modules: {
9
+ [p: string]: Module;
10
+ }): void;
11
+ }
@@ -5,8 +5,10 @@ export interface Module {
5
5
  tag: string;
6
6
  host: string;
7
7
  }
8
- export default class BusinessProxy {
9
- private modules;
8
+ export default class ProxyBusiness {
9
+ protected modules: {
10
+ [key: string]: Module;
11
+ };
10
12
  private onError;
11
13
  setModules(modules: {
12
14
  [key: string]: Module;
@@ -26,19 +26,22 @@ export declare class Business extends BaseBusiness {
26
26
  import BaseBusinessState from "./business/BusinessState";
27
27
  export declare class BusinessState<M = any> extends BaseBusinessState<M> {
28
28
  }
29
- import BaseBusinessProxy, { Module as BaseModule } from "./business/BusinessProxy";
30
- export declare class BusinessProxy extends BaseBusinessProxy {
29
+ import BaseProxyBusiness, { Module as BaseModule } from "./business/ProxyBusiness";
30
+ export declare class ProxyBusiness extends BaseProxyBusiness {
31
31
  }
32
32
  export interface Module extends BaseModule {
33
33
  }
34
+ import _FormalProxyBusiness from "./business/FormalProxyBusiness";
35
+ export declare class FormalProxyBusiness extends _FormalProxyBusiness {
36
+ }
34
37
  import _BusinessServer from "./business/BusinessServer";
35
38
  export declare class BusinessServer extends _BusinessServer {
36
39
  }
37
- import BaseBusinessThread from "./business/BusinessThread";
38
- export declare abstract class BusinessThread extends BaseBusinessThread {
40
+ import _BusinessThread from "./business/BusinessThread";
41
+ export declare abstract class BusinessThread extends _BusinessThread {
39
42
  }
40
- import BaseBusinessThreadState from "./business/BusinessThreadState";
41
- export declare abstract class BusinessThreadState<Model = any> extends BaseBusinessThreadState<Model> {
43
+ import _BusinessThreadState from "./business/BusinessThreadState";
44
+ export declare abstract class BusinessThreadState<Model = any> extends _BusinessThreadState<Model> {
42
45
  }
43
46
  import BaseBusinessErrors, { ErrorType as _ErrorType, FormalError as _FormalError } from "./business/BusinessErrors";
44
47
  export declare class BusinessErrors extends BaseBusinessErrors {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ismx-nexo-node-app",
3
- "version": "0.4.83",
3
+ "version": "0.4.85",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf ./dist && npx tsc",
@@ -116,16 +116,20 @@ export default class BusinessServer extends Business
116
116
  }
117
117
  }}
118
118
 
119
- public async load(path: string): Promise<void>
119
+ public async load(parent: string, path: string): Promise<void>
120
120
  {
121
121
  const { readdir } = await import('fs/promises');
122
122
  const pathModule = await import('path');
123
123
  const { fileURLToPath } = await import('url');
124
124
 
125
- const files = await readdir(path);
125
+ // @ts-ignore
126
+ const __dirname = pathModule.dirname(fileURLToPath(parent));
127
+ const servicesPath = pathModule.join(__dirname, path);
128
+
129
+ const files = await readdir(servicesPath);
126
130
  for (const file of files) {
127
131
  if (!file.endsWith('.ts') && !file.endsWith('.js')) continue;
128
- const modulePath = pathModule.join(path, file);
132
+ const modulePath = pathModule.join(servicesPath, file);
129
133
  const mod = await import(modulePath);
130
134
  const ServiceClass = Object.values(mod)[0];
131
135
  // @ts-ignore
@@ -0,0 +1,68 @@
1
+ import {HttpRequest} from "../api/Service";
2
+ import ProxyBusiness from "./ProxyBusiness";
3
+ import {Wrapper} from "../api/ServiceRestFormal";
4
+ import Business from "./Business";
5
+ import fetch from "node-fetch";
6
+ import LoopbackBusiness from "./LoopbackBusiness";
7
+
8
+ export default class FormalLoopbackBusiness extends LoopbackBusiness {
9
+
10
+ constructor() {
11
+ super();
12
+ }
13
+
14
+ async get<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
15
+ return this.call<Res>(tag, 'GET', '/', request);
16
+ }
17
+
18
+ async list<Res>(tag: string, request: HttpRequest = {}): Promise<Res[]> {
19
+ return this.call<Res[]>(tag, 'GET', '/list', request);
20
+ }
21
+
22
+ async select(tag: string, request: HttpRequest = {}): Promise<string[]> {
23
+ return this.call<string[]>(tag, 'GET', '/select', request);
24
+ }
25
+
26
+ async count(tag: string, request: HttpRequest = {}): Promise<number> {
27
+ return this.call<number>(tag, 'GET', '/count', request);
28
+ }
29
+
30
+ async keymap(tag: string, request: HttpRequest = {}): Promise<{ [key:string]: string }> {
31
+ return this.call<{ [key:string]: string }>(tag, 'GET', '/keymap', request);
32
+ }
33
+
34
+ async map<Res>(tag: string, request: HttpRequest = {}): Promise<{ [key:string]: Res }> {
35
+ return this.call<{ [key:string]: Res }>(tag, 'GET', '/map', request);
36
+ }
37
+
38
+ async exist(tag: string, request: HttpRequest = {}): Promise<boolean> {
39
+ return this.call<boolean>(tag, 'GET', '/exist', request);
40
+ }
41
+
42
+ async post<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
43
+ return this.call<Res>(tag, 'POST', '/', request);
44
+ }
45
+
46
+ async put<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
47
+ return this.call<Res>(tag, 'PUT', '/', request);
48
+ }
49
+
50
+ async del<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
51
+ return this.call<Res>(tag, 'DELETE', '/', request);
52
+ }
53
+
54
+ async call<Res>(tag: string, method: string, endpoint: string, request: HttpRequest = {}): Promise<Res> {
55
+ return this.deformalize(() => super.loopback<any, Wrapper<Res>>(method, `${tag}/${endpoint}`, request));
56
+ }
57
+
58
+ private async deformalize<Res>(call: () => Promise<fetch.Response>): Promise<Res> {
59
+ let result = await call();
60
+ if (result.ok) {
61
+ let wrapper = await result.json() as Wrapper<Res>;
62
+ return wrapper.data;
63
+ } else {
64
+ const errorBody = await result.json();
65
+ throw new Error(JSON.stringify(errorBody));
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,67 @@
1
+ import {HttpRequest} from "../api/Service";
2
+ import ProxyBusiness from "./ProxyBusiness";
3
+ import {Wrapper} from "../api/ServiceRestFormal";
4
+ import Business from "./Business";
5
+ import fetch from "node-fetch";
6
+
7
+ export default class FormalProxyBusiness extends ProxyBusiness {
8
+
9
+ constructor() {
10
+ super();
11
+ }
12
+
13
+ async get<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
14
+ return this.call<Res>(tag, 'GET', '/', request);
15
+ }
16
+
17
+ async list<Res>(tag: string, request: HttpRequest = {}): Promise<Res[]> {
18
+ return this.call<Res[]>(tag, 'GET', '/list', request);
19
+ }
20
+
21
+ async select(tag: string, request: HttpRequest = {}): Promise<string[]> {
22
+ return this.call<string[]>(tag, 'GET', '/select', request);
23
+ }
24
+
25
+ async count(tag: string, request: HttpRequest = {}): Promise<number> {
26
+ return this.call<number>(tag, 'GET', '/count', request);
27
+ }
28
+
29
+ async keymap(tag: string, request: HttpRequest = {}): Promise<{ [key:string]: string }> {
30
+ return this.call<{ [key:string]: string }>(tag, 'GET', '/keymap', request);
31
+ }
32
+
33
+ async map<Res>(tag: string, request: HttpRequest = {}): Promise<{ [key:string]: Res }> {
34
+ return this.call<{ [key:string]: Res }>(tag, 'GET', '/map', request);
35
+ }
36
+
37
+ async exist(tag: string, request: HttpRequest = {}): Promise<boolean> {
38
+ return this.call<boolean>(tag, 'GET', '/exist', request);
39
+ }
40
+
41
+ async post<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
42
+ return this.call<Res>(tag, 'POST', '/', request);
43
+ }
44
+
45
+ async put<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
46
+ return this.call<Res>(tag, 'PUT', '/', request);
47
+ }
48
+
49
+ async del<Res>(tag: string, request: HttpRequest = {}): Promise<Res> {
50
+ return this.call<Res>(tag, 'DELETE', '/', request);
51
+ }
52
+
53
+ async call<Res>(tag: string, method: string, endpoint: string, request: HttpRequest = {}): Promise<Res> {
54
+ return this.deformalize(() => super.call<any, Wrapper<Res>>(tag, method, endpoint, request));
55
+ }
56
+
57
+ private async deformalize<Res>(call: () => Promise<fetch.Response>): Promise<Res> {
58
+ let result = await call();
59
+ if (result.ok) {
60
+ let wrapper = await result.json() as Wrapper<Res>;
61
+ return wrapper.data;
62
+ } else {
63
+ const errorBody = await result.json();
64
+ throw new Error(JSON.stringify(errorBody));
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,31 @@
1
+ import { HttpResponse, HttpRequest } from "../api/Service"
2
+ import fetch, {Body, Headers} from 'node-fetch';
3
+ import QueryUtils from "../repository/utils/QueryUtils";
4
+ import ProxyBusiness, {Module} from "./ProxyBusiness";
5
+ import FormalProxyBusiness from "./FormalProxyBusiness";
6
+
7
+ export default class LoopbackBusiness extends ProxyBusiness
8
+ {
9
+ constructor(loopback = "http://localhost") {
10
+ super();
11
+ this.modules = {
12
+ loopback: {
13
+ id: "loopback",
14
+ tag: "loopback",
15
+ host: loopback,
16
+ }
17
+ };
18
+ }
19
+
20
+ async call<Req, Res>(tag: string, method: string, endpoint: string, request: HttpRequest<Req>): Promise<fetch.Response> {
21
+ return this.loopback(method, endpoint, request);
22
+ }
23
+
24
+ async loopback<Req, Res>(method: string, endpoint: string, request: HttpRequest<Req>): Promise<fetch.Response> {
25
+ return super.call<Req, Res>("loopback", endpoint, method, request);
26
+ }
27
+
28
+ setModules(modules: { [p: string]: Module }) {
29
+ throw new Error("Cannot set modules in loopback proxy");
30
+ }
31
+ }
@@ -1,7 +1,6 @@
1
1
  import { HttpResponse, HttpRequest } from "../api/Service"
2
2
  import fetch, {Body, Headers} from 'node-fetch';
3
3
  import QueryUtils from "../repository/utils/QueryUtils";
4
- import {json} from "express";
5
4
 
6
5
  export interface Module {
7
6
  id: string;
@@ -9,9 +8,9 @@ export interface Module {
9
8
  host: string;
10
9
  }
11
10
 
12
- export default class BusinessProxy
11
+ export default class ProxyBusiness
13
12
  {
14
- private modules: {[key:string]: Module} = {};
13
+ protected modules: {[key:string]: Module} = {};
15
14
  private onError: (error: Error) => Error = (error) => error;
16
15
 
17
16
  setModules(modules: {[key:string]: Module}) {
@@ -43,6 +42,8 @@ export default class BusinessProxy
43
42
  // Realiza la llamada a la API con las cabeceras y la URL base de la llamada.
44
43
  return fetch(module.host + endpoint + QueryUtils.map(request.query), {
45
44
  ...request, method, body: method !== "GET" ? body : undefined, headers
46
- }).catch((error) => { throw this.onError(error) });
45
+ }).catch((error) => {
46
+ throw this.onError(error)
47
+ });
47
48
  }
48
49
  }
@@ -24,18 +24,21 @@ export class Business extends BaseBusiness {}
24
24
  import BaseBusinessState from "./business/BusinessState";
25
25
  export class BusinessState<M=any> extends BaseBusinessState<M> {}
26
26
 
27
- import BaseBusinessProxy, { Module as BaseModule } from "./business/BusinessProxy";
28
- export class BusinessProxy extends BaseBusinessProxy {}
27
+ import BaseProxyBusiness, { Module as BaseModule } from "./business/ProxyBusiness";
28
+ export class ProxyBusiness extends BaseProxyBusiness {}
29
29
  export interface Module extends BaseModule {}
30
30
 
31
+ import _FormalProxyBusiness from "./business/FormalProxyBusiness";
32
+ export class FormalProxyBusiness extends _FormalProxyBusiness {}
33
+
31
34
  import _BusinessServer from "./business/BusinessServer";
32
35
  export class BusinessServer extends _BusinessServer {}
33
36
 
34
- import BaseBusinessThread from "./business/BusinessThread";
35
- export abstract class BusinessThread extends BaseBusinessThread {}
37
+ import _BusinessThread from "./business/BusinessThread";
38
+ export abstract class BusinessThread extends _BusinessThread {}
36
39
 
37
- import BaseBusinessThreadState from "./business/BusinessThreadState";
38
- export abstract class BusinessThreadState<Model=any> extends BaseBusinessThreadState<Model> {}
40
+ import _BusinessThreadState from "./business/BusinessThreadState";
41
+ export abstract class BusinessThreadState<Model=any> extends _BusinessThreadState<Model> {}
39
42
 
40
43
  import BaseBusinessErrors, { ErrorType as _ErrorType, FormalError as _FormalError} from "./business/BusinessErrors";
41
44
  export class BusinessErrors extends BaseBusinessErrors {}