ismx-nexo-node-app 0.4.23 → 0.4.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.
@@ -11,6 +11,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.HttpResponse = void 0;
13
13
  class HttpResponse {
14
+ constructor() {
15
+ this.content = null;
16
+ }
14
17
  static ok(content) {
15
18
  let response = new HttpResponse();
16
19
  response.content = content;
@@ -1,4 +1,27 @@
1
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
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,11 +31,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
34
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const Service_1 = __importDefault(require("./Service"));
35
+ const Service_1 = __importStar(require("./Service"));
16
36
  class ServiceRest extends Service_1.default {
17
37
  constructor(method, endpoint = "/") {
18
38
  super(method, endpoint);
@@ -26,7 +46,7 @@ class ServiceRest extends Service_1.default {
26
46
  }
27
47
  serveRest(request) {
28
48
  return __awaiter(this, void 0, void 0, function* () {
29
- return {};
49
+ return Service_1.HttpResponse.ok(null);
30
50
  });
31
51
  }
32
52
  }
@@ -38,13 +38,17 @@ class RepositoryRest extends Repository_1.default {
38
38
  let call = fetch(this.baseUrl + endpoint + QueryUtils_1.default.map(request.query), Object.assign(Object.assign({}, request), { body: method !== "GET" ? JSON.stringify(request.body) : undefined, headers }));
39
39
  // Añade información adicional a la respuesta y devuelve el resultado (o el error en su caso).
40
40
  return call.then((res) => __awaiter(this, void 0, void 0, function* () {
41
- var _a, _b;
41
+ var _a, _b, _c, _d;
42
42
  let headers = {};
43
43
  res.headers.forEach((value, key) => headers[key] = value);
44
+ let rawResponse = yield res.text();
45
+ (_b = (_a = this.options).onRawResponse) === null || _b === void 0 ? void 0 : _b.call(_a, rawResponse);
44
46
  let response = {
45
- httpCode: res.status, content: (yield res.json()), headers
47
+ httpCode: res.status,
48
+ content: JSON.stringify(rawResponse),
49
+ headers
46
50
  };
47
- (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.onResponse) === null || _b === void 0 ? void 0 : _b.call(_a, response);
51
+ (_d = (_c = this.options) === null || _c === void 0 ? void 0 : _c.onResponse) === null || _d === void 0 ? void 0 : _d.call(_c, response);
48
52
  return response;
49
53
  })).catch((error) => {
50
54
  var _a, _b;
@@ -33,7 +33,7 @@ class RepositoryRestFormal extends RepositoryRest_1.default {
33
33
  throw new BusinessErrors_1.FormalError({ code: content.code, description: content.description });
34
34
  }
35
35
  else
36
- throw new BusinessErrors_1.FormalError({ code: "-1", description: "Not formal response" });
36
+ throw new BusinessErrors_1.FormalError({ code: "-1", description: "No formal response" });
37
37
  }))
38
38
  .catch((error) => {
39
39
  if (error instanceof BusinessErrors_1.FormalError)
@@ -16,13 +16,13 @@ export interface HttpRequest<T = any> {
16
16
  };
17
17
  }
18
18
  export declare class HttpResponse<T = any> {
19
- content?: T;
19
+ content: T;
20
20
  httpCode?: number;
21
21
  headers?: {
22
22
  [key: string]: string;
23
23
  };
24
24
  static ok<T = any>(content: T): HttpResponse<any>;
25
- static ko<T = any>(httpCode: number, content: T | undefined): HttpResponse<any>;
25
+ static ko<T = any>(httpCode: number, content: T): HttpResponse<any>;
26
26
  }
27
27
  export default abstract class Service<Req, Res> {
28
28
  static readonly services: Service<any, any>[];
@@ -3,7 +3,7 @@ import ServiceRest from "./ServiceRest";
3
3
  export interface Wrapper<T> {
4
4
  code: string;
5
5
  description: string;
6
- data?: T;
6
+ data: T;
7
7
  debug?: string;
8
8
  }
9
9
  export default class ServiceRestFormal<Req = any, Res = any> extends ServiceRest<Req, Wrapper<Res>> {
@@ -14,10 +14,10 @@ export default class ServiceRestFormal<Req = any, Res = any> extends ServiceRest
14
14
  fullSelect<Req, Res>(request: HttpRequest<Req>, api: {
15
15
  select: ServiceRestFormal<Req, string[]>;
16
16
  full: ServiceRestFormal<Req, Res>;
17
- }): Promise<(Awaited<Res> | undefined)[]>;
17
+ }): Promise<Awaited<Res>[]>;
18
18
  static unwrap<Res>(request: Promise<HttpResponse<Wrapper<Res>>>): Promise<Res | undefined>;
19
19
  static fullSelect<Req, Res>(request: HttpRequest<Req>, api: {
20
20
  select: ServiceRestFormal<Req, string[]>;
21
21
  full: ServiceRestFormal<Req, Res>;
22
- }): Promise<(Awaited<Res> | undefined)[]>;
22
+ }): Promise<Awaited<Res>[]>;
23
23
  }
@@ -63,5 +63,5 @@ export default class ServiceRestFormalTemplate<Model = any> {
63
63
  protected fullSelect<Req, Res>(request: HttpRequest<Req>, api: {
64
64
  select: ServiceRestFormal<Req, string[]>;
65
65
  full: ServiceRestFormal<Req, Res>;
66
- }): Promise<(Awaited<Res> | undefined)[]>;
66
+ }): Promise<Awaited<Res>[]>;
67
67
  }
@@ -3,6 +3,7 @@ import { HttpRequest, HttpResponse } from "../api/Service";
3
3
  export interface RestOptions {
4
4
  interceptor?: (endpoint: string, request: HttpRequest) => HttpRequest | undefined;
5
5
  onResponse?: (response: HttpResponse) => void;
6
+ onRawResponse?: (response: string) => void;
6
7
  onError?: (error: Error) => void;
7
8
  }
8
9
  export default class RepositoryRest<Body = any, Res = any> extends Repository {
@@ -3,5 +3,5 @@ import { Wrapper } from "../api/ServiceRestFormal";
3
3
  import { HttpRequest } from "../api/Service";
4
4
  export default class RepositoryRestFormal<Body = any, S = any> extends RepositoryRest<Body, Wrapper<S>> {
5
5
  constructor(baseUrl: string, options?: RestOptions);
6
- callFormal<B = Body, E = S>(method?: string, endpoint?: string, request?: HttpRequest<B>): Promise<E | undefined>;
6
+ callFormal<B = Body, E = S>(method?: string, endpoint?: string, request?: HttpRequest<B>): Promise<E>;
7
7
  }
@@ -20,5 +20,5 @@ export default class RepositoryRestFormalTemplate<Model> {
20
20
  map(request?: HttpRequest): Promise<{
21
21
  [key: string]: Model;
22
22
  }>;
23
- call<E = {}, B = {}>(method: string, endpoint: string, request?: HttpRequest<B>): Promise<E | undefined>;
23
+ call<E = {}, B = {}>(method: string, endpoint: string, request?: HttpRequest<B>): Promise<E>;
24
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ismx-nexo-node-app",
3
- "version": "0.4.23",
3
+ "version": "0.4.24",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf ./dist && npx tsc",
@@ -11,7 +11,7 @@ export interface HttpRequest<T = any> {
11
11
  }
12
12
 
13
13
  export class HttpResponse<T = any> {
14
- content?: T;
14
+ content: T = null!;
15
15
  httpCode?: number;
16
16
  headers?: { [key: string]: string };
17
17
 
@@ -21,7 +21,7 @@ export class HttpResponse<T = any> {
21
21
  response.httpCode = 200;
22
22
  return response
23
23
  }
24
- static ko<T=any>(httpCode: number, content: T | undefined) {
24
+ static ko<T=any>(httpCode: number, content: T) {
25
25
  let response = new HttpResponse();
26
26
  response.content = content;
27
27
  response.httpCode = httpCode;
@@ -14,6 +14,6 @@ export default class ServiceRest<Req, Res> extends Service<Req, Res>
14
14
  }
15
15
 
16
16
  async serveRest(request: HttpRequest<Req>): Promise<HttpResponse<Res>> {
17
- return {};
17
+ return HttpResponse.ok(null);
18
18
  }
19
19
  }
@@ -5,7 +5,7 @@ import {FormalError} from "../business/BusinessErrors";
5
5
  export interface Wrapper<T> {
6
6
  code: string,
7
7
  description: string,
8
- data?: T
8
+ data: T
9
9
  debug?: string
10
10
  }
11
11
 
@@ -3,64 +3,68 @@ import {HttpRequest, HttpResponse} from "../api/Service";
3
3
  import QueryUtils from "./utils/QueryUtils";
4
4
 
5
5
  export interface RestOptions {
6
- interceptor?: (endpoint: string, request: HttpRequest) => HttpRequest | undefined
7
- onResponse?: (response: HttpResponse) => void;
8
- onError?: (error: Error) => void
6
+ interceptor?: (endpoint: string, request: HttpRequest) => HttpRequest | undefined
7
+ onResponse?: (response: HttpResponse) => void;
8
+ onRawResponse?: (response: string) => void;
9
+ onError?: (error: Error) => void
9
10
  }
10
11
 
11
12
  export default class RepositoryRest<Body=any,Res=any> extends Repository
12
13
  {
13
- private readonly baseUrl: string;
14
+ private readonly baseUrl: string;
14
15
 
15
- private readonly options: RestOptions
16
+ private readonly options: RestOptions
16
17
 
17
- constructor(baseUrl: string, options: RestOptions={}) {
18
- super();
19
- this.baseUrl = baseUrl;
20
- this.options = options;
21
- }
18
+ constructor(baseUrl: string, options: RestOptions={}) {
19
+ super();
20
+ this.baseUrl = baseUrl;
21
+ this.options = options;
22
+ }
22
23
 
23
- async call<B=Body, E = Res>(
24
- method: string = 'GET',
25
- endpoint: string = '/',
26
- request: HttpRequest<B> = {},
27
- ): Promise<HttpResponse<E>>
28
- {
29
- // Especifica el método de la llamada HTTP al recurso.
30
- request.method = method;
24
+ async call<B=Body, E = Res>(
25
+ method: string = 'GET',
26
+ endpoint: string = '/',
27
+ request: HttpRequest<B> = {},
28
+ ): Promise<HttpResponse<E>>
29
+ {
30
+ // Especifica el método de la llamada HTTP al recurso.
31
+ request.method = method;
31
32
 
33
+ // Notifica que una petición REST va a ser realizada
34
+ request = this.options.interceptor?.(endpoint, request) ?? request
32
35
 
33
- // Notifica que una petición REST va a ser realizada
34
- request = this.options.interceptor?.(endpoint, request) ?? request
36
+ // Completa la información de las cabeceras con cabeceras comunes por llamada a API.
37
+ let headers = new Headers(request.headers);
38
+ headers.set('Content-Type', 'application/json');
39
+ headers.set('Cache-Control', 'no-cache');
40
+ headers.set('Pragma', 'no-cache');
41
+ for (const header of Object.keys(headers))
42
+ headers.set(header, request.headers?.[header] ?? "");
35
43
 
36
- // Completa la información de las cabeceras con cabeceras comunes por llamada a API.
37
- let headers = new Headers(request.headers);
38
- headers.set('Content-Type', 'application/json');
39
- headers.set('Cache-Control', 'no-cache');
40
- headers.set('Pragma', 'no-cache');
41
- for (const header of Object.keys(headers))
42
- headers.set(header, request.headers?.[header] ?? "")
44
+ // Realiza la llamada a la API con las cabeceras y la URL base de la llamada.
45
+ let call = fetch(this.baseUrl + endpoint + QueryUtils.map(request.query), {
46
+ ...request,
47
+ body: method !== "GET" ? JSON.stringify(request.body) : undefined,
48
+ headers
49
+ });
43
50
 
44
- // Realiza la llamada a la API con las cabeceras y la URL base de la llamada.
45
- let call = fetch(this.baseUrl + endpoint + QueryUtils.map(request.query), {
46
- ...request,
47
- body: method !== "GET" ? JSON.stringify(request.body) : undefined,
48
- headers
49
- });
50
-
51
- // Añade información adicional a la respuesta y devuelve el resultado (o el error en su caso).
52
- return call.then(async (res: Response) => {
53
- let headers: any = {}; res.headers.forEach((value, key) => headers[key] = value);
54
- let response: HttpResponse<E> = {
55
- httpCode: res.status, content: (await res.json()) as E, headers
56
- };
57
- this.options?.onResponse?.(response);
58
- return response;
59
- }).catch((error) => {
60
- this.options.onError?.(error);
61
- throw error;
62
- });
63
- }
51
+ // Añade información adicional a la respuesta y devuelve el resultado (o el error en su caso).
52
+ return call.then(async (res: Response) => {
53
+ let headers: any = {}; res.headers.forEach((value, key) => headers[key] = value);
54
+ let rawResponse = await res.text();
55
+ this.options.onRawResponse?.(rawResponse);
56
+ let response: HttpResponse<E> = {
57
+ httpCode: res.status,
58
+ content: JSON.stringify(rawResponse) as E,
59
+ headers
60
+ };
61
+ this.options?.onResponse?.(response);
62
+ return response;
63
+ }).catch((error) => {
64
+ this.options.onError?.(error);
65
+ throw error;
66
+ });
67
+ }
64
68
 
65
69
 
66
70
  }
@@ -13,7 +13,7 @@ export default class RepositoryRestFormal<Body=any, S=any> extends RepositoryRes
13
13
  method: string = 'GET',
14
14
  endpoint: string = '/',
15
15
  request: HttpRequest<B> = {},
16
- ): Promise<E | undefined> {
16
+ ): Promise<E> {
17
17
 
18
18
  return super.call<B, Wrapper<E>>(method, endpoint, request)
19
19
  .then(async (response) => {
@@ -21,7 +21,7 @@ export default class RepositoryRestFormal<Body=any, S=any> extends RepositoryRes
21
21
  if (content) {
22
22
  if (content.code === "0") return content.data;
23
23
  else throw new FormalError({ code: content.code, description: content.description });
24
- } else throw new FormalError({ code: "-1", description: "Not formal response" });
24
+ } else throw new FormalError({ code: "-1", description: "No formal response" });
25
25
  })
26
26
  .catch((error) => {
27
27
  if (error instanceof FormalError) throw error;
@@ -78,7 +78,7 @@ export default class RepositoryRestFormalTemplate<Model> {
78
78
  return (await this.repository.callFormal("GET", "/map", request)) ?? {};
79
79
  }
80
80
 
81
- async call<E={}, B={}>(method: string, endpoint: string, request: HttpRequest<B>={}): Promise<E | undefined> {
81
+ async call<E={}, B={}>(method: string, endpoint: string, request: HttpRequest<B>={}): Promise<E> {
82
82
  return this.repository.callFormal<B, E>(method, endpoint, request);
83
83
  }
84
84
  }