@mp-front/common 0.0.2-next.0 → 0.0.2-next.2
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/README.md +300 -591
- package/dist/cache-providers/redis/redis-cache.d.ts +2 -1
- package/dist/cache-providers/redis/redis-cache.d.ts.map +1 -1
- package/dist/client-AVep4jK5.cjs +1 -0
- package/dist/client-DuXI9Ldu.js +306 -0
- package/dist/http/client.d.ts +91 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/constants.d.ts +3 -0
- package/dist/http/constants.d.ts.map +1 -0
- package/dist/middleware/api-middleware.d.ts +115 -3
- package/dist/middleware/api-middleware.d.ts.map +1 -1
- package/dist/mp-front-common-all.cjs +1 -1
- package/dist/mp-front-common-all.js +163 -72
- package/dist/mp-front-common-cache.cjs +1 -1
- package/dist/mp-front-common-cache.js +1 -1
- package/dist/mp-front-common-cacheProviders.cjs +1 -1
- package/dist/mp-front-common-cacheProviders.js +1 -1
- package/dist/mp-front-common-http.cjs +1 -1
- package/dist/mp-front-common-http.js +1 -1
- package/dist/{redis-cache-D9CzfYgO.cjs → redis-cache-BstIlgPR.cjs} +1 -1
- package/dist/{redis-cache-B_SyXbUI.js → redis-cache-HiNx0Kbv.js} +17 -14
- package/package.json +1 -1
- package/dist/client-BVAQF7Tb.cjs +0 -1
- package/dist/client-DKI6Ntcl.js +0 -234
|
@@ -17,7 +17,8 @@ export declare class RedisCache<T> {
|
|
|
17
17
|
ttl(key: string, time: number): void;
|
|
18
18
|
simpleGet(key: string): Promise<string>;
|
|
19
19
|
simpleHGet(key: string, field: string): Promise<string>;
|
|
20
|
-
|
|
20
|
+
simpleHGetBuffer(key: string, field: string): Promise<Buffer<ArrayBufferLike>>;
|
|
21
|
+
simpleHSet<T extends string | number | Buffer = string>(key: string, field: string, value: T): Promise<number>;
|
|
21
22
|
simpleHGetAll(key: string): Promise<Record<string, string>>;
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=redis-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-cache.d.ts","sourceRoot":"","sources":["../../../src/cache-providers/redis/redis-cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAKpE,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAE7C,OAAO,CAAC,WAAW;YAIL,aAAa;IAS3B,OAAO,CAAC,aAAa;IAKR,GAAG,CAAC,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAkBvB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKrC,GAAG,CAAC,EACf,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,SAAiB,EACjB,OAA8B,GAC/B,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1B,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAYjC,SAAS;IAIT,SAAS,CAAC,GAAG,EAAE,MAAM;IAIrB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAI7B,SAAS,CAAC,GAAG,EAAE,MAAM;IAKrB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKrC,
|
|
1
|
+
{"version":3,"file":"redis-cache.d.ts","sourceRoot":"","sources":["../../../src/cache-providers/redis/redis-cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAKpE,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAE7C,OAAO,CAAC,WAAW;YAIL,aAAa;IAS3B,OAAO,CAAC,aAAa;IAKR,GAAG,CAAC,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAkBvB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKrC,GAAG,CAAC,EACf,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,SAAiB,EACjB,OAA8B,GAC/B,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1B,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAYjC,SAAS;IAIT,SAAS,CAAC,GAAG,EAAE,MAAM;IAIrB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAI7B,SAAS,CAAC,GAAG,EAAE,MAAM;IAKrB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAK3C,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAC3D,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC;IAKH,aAAa,CAAC,GAAG,EAAE,MAAM;CAGjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var D=Object.defineProperty;var x=(o,e,t)=>e in o?D(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var c=(o,e,t)=>x(o,typeof e!="symbol"?e+"":e,t);const i=require("rxjs"),O=require("./logger-BMbeDoGU.cjs");require("./lodash-DNCgFYS7.cjs");require("node-jose");require("crypto");const l=require("./default-errors-DiEIEEE2.cjs"),B=require("./fetch-BZP9DZLg.cjs"),L=require("./authorization-service-DkLS18Us.cjs"),$=require("./encoder-BEp9qfLf.cjs"),S=require("./loading-handler-BrN0O37N.cjs"),b=require("./v5-BTqP79vV.cjs");class q{constructor(e={}){c(this,"logger",new O.Logger);c(this,"headers");this.headers={Accept:"application/json","Content-Type":"application/vnd.api+json",...e}}addTokenBackend(e){return this.logger.logDebug("addTokenBackend HttpHeaders",JSON.stringify(e)),new L.AuthorizationService().get().pipe(i.switchMap(t=>i.of({...e,Authorization:`Bearer ${t}`})))}get(e){this.logger.logDebug("get HttpHeaders");const t=i.of({...this.headers});return e?t.pipe(i.switchMap(s=>this.addTokenBackend(s))):t}}const P=process.env.ID_FRONT??"NOT_AVAILABLE";class J{constructor(){c(this,"httpHeaders",new q);c(this,"logger",new O.Logger)}errorCatcher(e,t){var s,r,n;if(e!=null&&e.errors)throw new l.RuntimeError(((n=(r=(s=e.errors).at)==null?void 0:r.call(s,0))==null?void 0:n.code)??l.RuntimeErrorCode.DEFAULT,t??"");return!(e!=null&&e.errors)}get(e,t={}){const s=this.buildRequest("GET",e,null,t);return this.request(s)}post(e,t,s={}){const r=this.buildRequest("POST",e,t,s);return this.request(r)}put(e,t,s={}){const r=this.buildRequest("PUT",e,t,s);return this.request(r)}delete(e,t={}){const s=this.buildRequest("DELETE",e,null,t);return this.request(s)}formatParams(e,t){return JSON.stringify(t==="JSON:API"?{data:{type:P,attributes:e}}:e)}buildRequest(e,t,s,r){const n=r.format??"JSON:API",a={requestID:r==null?void 0:r.requestID,withCredentials:(r==null?void 0:r.withCredentials)??!0,url:t,headers:r.headers,method:e,selector:u=>u.json()};if(e==="GET"){const u=new URL(t);if(r.params)for(const E of Object.keys(r.params))u.searchParams.append(E,`${r.params[E]}`);return{...a,url:u.toString()}}return{...a,body:this.formatParams(s,n)}}request({url:e,requestID:t,withCredentials:s=!1,...r}){return this.httpHeaders.get(s).pipe(i.switchMap(n=>B.fromFetch(e,{...r,headers:{...r.headers,...n}}).pipe(i.catchError(a=>{throw this.logger.logError(JSON.stringify(a)),this.logger.logError(`HttpBackend \x1B[37m <URL>: \x1B[33m ${e} \x1B[37m <RequestID>: \x1B[33m ${t} \x1B[37m <HEADERS>: \x1B[33m ${JSON.stringify(n)} \x1B[37m <BODY>: \x1B[33m ${JSON.stringify(this.formatParams(r.body,r.format))} \x1B[37m <RESPONSE>: \x1B[33m ${JSON.stringify(a)} \x1B[33m`),new l.RuntimeError(l.RuntimeErrorCode.DEFAULT,t)}),i.switchMap(a=>(this.logger.logDebug(`HttpBackend \x1B[37m <URL>: \x1B[33m ${e} \x1B[37m <RequestID>: \x1B[33m ${t} \x1B[37m <HEADERS>: \x1B[33m ${JSON.stringify(n)} \x1B[37m <BODY>: \x1B[33m ${JSON.stringify(this.formatParams(r.body,r.format))} \x1B[37m <RESPONSE>: \x1B[33m ${JSON.stringify(a)} \x1B[33m`),i.of(a))))),i.filter(n=>this.errorCatcher(n,t)))}}const y="requestID",p="Content-Type";class I{constructor(){c(this,"httpHeaders",new q);c(this,"logger",new O.Logger);c(this,"encoder",new $.Encoder);c(this,"isLoadingEnabled",!0)}setIsLoadingEnabled(e){this.isLoadingEnabled=e}get(e,t={}){const s=this.buildRequest("GET",e,null,t);return this.request(s)}post(e,t,s={}){const r=this.buildRequest("POST",e,t,s);return this.request(r)}put(e,t,s={}){const r=this.buildRequest("PUT",e,t,s);return this.request(r)}patch(e,t,s={}){const r=this.buildRequest("PATCH",e,t,s);return this.request(r)}delete(e,t={}){const s=this.buildRequest("DELETE",e,null,t);return this.request(s)}buildRequest(e,t,s,r){const n={url:t,headers:r.headers,method:e,selector:d=>d.json()},a=new Date().toISOString(),u=b.v5(a,b.v5.URL);if(e==="GET"){const d=new URL(t,location.origin),m=r.params??{},H=Object.entries(m).reduce((h,N)=>{const[g,w]=N;if(h[g]=`${w}`,Object.hasOwn(m,g)){const f=m[g];f!=null&&(h[g]=f)}return h},{}),T=this.encoder.encode(H,u),R=JSON.parse(T);for(const h of Object.keys(R))d.searchParams.append(h,`${R[h]}`);return{...n,url:d.toString()}}if(new Headers(r.headers).get("Content-Type")==="multipart/form-data"){const d=s;return d.append(y,u),{...n,body:d}}return{...n,body:this.encoder.encode(s??{},u)}}request({url:e,...t}){return S.LoadingHandler.getInstance().setSubject(this.isLoadingEnabled),this.httpHeaders.get(!1).pipe(i.switchMap(s=>{const r={...s,...t.headers};return p in r&&r[p]==="multipart/form-data"&&delete r[p],B.fromFetch(e,{...t,headers:r}).pipe(i.switchMap(n=>i.of(this.encoder.decode(n))),i.switchMap(n=>{if("code"in n)throw n;return S.LoadingHandler.getInstance().setSubject(!1),this.logger.logDebug(`HttpClient <URL>: ${e} <HEADERS>: ${JSON.stringify(t.headers)} <BODY> ${JSON.stringify(t.body)} <RESPONSE>: ${JSON.stringify(n)}`),i.of(n)}),i.catchError(n=>(this.logger.logError(`HttpClient <URL>: ${e} <HEADERS>: ${JSON.stringify(t.headers)} <BODY> ${JSON.stringify(t.body)} <ERROR>: ${JSON.stringify(n)}`),S.LoadingHandler.getInstance().setSubject(!1),l.ErrorHandler.getInstance().setSubject(n),i.EMPTY)))}))}}exports.HttpBackend=J;exports.HttpClient=I;exports.HttpHeaders=q;exports.REQUEST_ID_KEY=y;
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
var L = Object.defineProperty;
|
|
2
|
+
var P = (o, e, t) => e in o ? L(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
|
|
3
|
+
var i = (o, e, t) => P(o, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
import { switchMap as d, of as m, catchError as T, filter as w, EMPTY as J } from "rxjs";
|
|
5
|
+
import { L as O } from "./logger-DtlFWyFO.js";
|
|
6
|
+
import "./lodash-QjAkD17S.js";
|
|
7
|
+
import "node-jose";
|
|
8
|
+
import "crypto";
|
|
9
|
+
import { R, a as B, E as I } from "./default-errors-DsKmUZbG.js";
|
|
10
|
+
import { f as N } from "./fetch-CUIb9XhZ.js";
|
|
11
|
+
import { A } from "./authorization-service-DE-hoYji.js";
|
|
12
|
+
import { E as k } from "./encoder-CXAlLf5T.js";
|
|
13
|
+
import { L as p } from "./loading-handler-ivYFmS_V.js";
|
|
14
|
+
import { v as y } from "./v5-Cu1sjPlx.js";
|
|
15
|
+
class q {
|
|
16
|
+
constructor(e = {}) {
|
|
17
|
+
i(this, "logger", new O());
|
|
18
|
+
i(this, "headers");
|
|
19
|
+
this.headers = {
|
|
20
|
+
Accept: "application/json",
|
|
21
|
+
"Content-Type": "application/vnd.api+json",
|
|
22
|
+
...e
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
addTokenBackend(e) {
|
|
26
|
+
return this.logger.logDebug("addTokenBackend HttpHeaders", JSON.stringify(e)), new A().get().pipe(
|
|
27
|
+
d((t) => m({ ...e, Authorization: `Bearer ${t}` }))
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
get(e) {
|
|
31
|
+
this.logger.logDebug("get HttpHeaders");
|
|
32
|
+
const t = m({ ...this.headers });
|
|
33
|
+
return e ? t.pipe(
|
|
34
|
+
d((s) => this.addTokenBackend(s))
|
|
35
|
+
) : t;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const j = process.env.ID_FRONT ?? "NOT_AVAILABLE";
|
|
39
|
+
class Z {
|
|
40
|
+
constructor() {
|
|
41
|
+
i(this, "httpHeaders", new q());
|
|
42
|
+
i(this, "logger", new O());
|
|
43
|
+
}
|
|
44
|
+
errorCatcher(e, t) {
|
|
45
|
+
var s, r, a;
|
|
46
|
+
if (e != null && e.errors)
|
|
47
|
+
throw new R(
|
|
48
|
+
((a = (r = (s = e.errors).at) == null ? void 0 : r.call(s, 0)) == null ? void 0 : a.code) ?? B.DEFAULT,
|
|
49
|
+
t ?? ""
|
|
50
|
+
);
|
|
51
|
+
return !(e != null && e.errors);
|
|
52
|
+
}
|
|
53
|
+
get(e, t = {}) {
|
|
54
|
+
const s = this.buildRequest("GET", e, null, t);
|
|
55
|
+
return this.request(s);
|
|
56
|
+
}
|
|
57
|
+
post(e, t, s = {}) {
|
|
58
|
+
const r = this.buildRequest("POST", e, t, s);
|
|
59
|
+
return this.request(r);
|
|
60
|
+
}
|
|
61
|
+
put(e, t, s = {}) {
|
|
62
|
+
const r = this.buildRequest("PUT", e, t, s);
|
|
63
|
+
return this.request(r);
|
|
64
|
+
}
|
|
65
|
+
delete(e, t = {}) {
|
|
66
|
+
const s = this.buildRequest("DELETE", e, null, t);
|
|
67
|
+
return this.request(s);
|
|
68
|
+
}
|
|
69
|
+
formatParams(e, t) {
|
|
70
|
+
return JSON.stringify(t === "JSON:API" ? {
|
|
71
|
+
data: {
|
|
72
|
+
type: j,
|
|
73
|
+
attributes: e
|
|
74
|
+
}
|
|
75
|
+
} : e);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Building configuration object request
|
|
79
|
+
*/
|
|
80
|
+
buildRequest(e, t, s, r) {
|
|
81
|
+
const a = r.format ?? "JSON:API", n = {
|
|
82
|
+
requestID: r == null ? void 0 : r.requestID,
|
|
83
|
+
withCredentials: (r == null ? void 0 : r.withCredentials) ?? !0,
|
|
84
|
+
url: t,
|
|
85
|
+
headers: r.headers,
|
|
86
|
+
method: e,
|
|
87
|
+
selector: (u) => u.json()
|
|
88
|
+
};
|
|
89
|
+
if (e === "GET") {
|
|
90
|
+
const u = new URL(t);
|
|
91
|
+
if (r.params)
|
|
92
|
+
for (const g of Object.keys(r.params))
|
|
93
|
+
u.searchParams.append(g, `${r.params[g]}`);
|
|
94
|
+
return { ...n, url: u.toString() };
|
|
95
|
+
}
|
|
96
|
+
return { ...n, body: this.formatParams(s, a) };
|
|
97
|
+
}
|
|
98
|
+
request({
|
|
99
|
+
url: e,
|
|
100
|
+
requestID: t,
|
|
101
|
+
withCredentials: s = !1,
|
|
102
|
+
...r
|
|
103
|
+
}) {
|
|
104
|
+
return this.httpHeaders.get(s).pipe(
|
|
105
|
+
d(
|
|
106
|
+
(a) => N(e, {
|
|
107
|
+
...r,
|
|
108
|
+
headers: {
|
|
109
|
+
...r.headers,
|
|
110
|
+
...a
|
|
111
|
+
}
|
|
112
|
+
}).pipe(
|
|
113
|
+
T((n) => {
|
|
114
|
+
throw this.logger.logError(JSON.stringify(n)), this.logger.logError(
|
|
115
|
+
`HttpBackend \x1B[37m <URL>: \x1B[33m ${e} \x1B[37m <RequestID>: \x1B[33m ${t} \x1B[37m <HEADERS>: \x1B[33m ${JSON.stringify(
|
|
116
|
+
a
|
|
117
|
+
)} \x1B[37m <BODY>: \x1B[33m ${JSON.stringify(
|
|
118
|
+
this.formatParams(r.body, r.format)
|
|
119
|
+
)} \x1B[37m <RESPONSE>: \x1B[33m ${JSON.stringify(n)} \x1B[33m`
|
|
120
|
+
), new R(B.DEFAULT, t);
|
|
121
|
+
}),
|
|
122
|
+
d((n) => (this.logger.logDebug(
|
|
123
|
+
`HttpBackend \x1B[37m <URL>: \x1B[33m ${e} \x1B[37m <RequestID>: \x1B[33m ${t} \x1B[37m <HEADERS>: \x1B[33m ${JSON.stringify(
|
|
124
|
+
a
|
|
125
|
+
)} \x1B[37m <BODY>: \x1B[33m ${JSON.stringify(
|
|
126
|
+
this.formatParams(r.body, r.format)
|
|
127
|
+
)} \x1B[37m <RESPONSE>: \x1B[33m ${JSON.stringify(n)} \x1B[33m`
|
|
128
|
+
), m(n)))
|
|
129
|
+
)
|
|
130
|
+
),
|
|
131
|
+
w((a) => this.errorCatcher(a, t))
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const U = "requestID", S = "Content-Type";
|
|
136
|
+
class ee {
|
|
137
|
+
constructor() {
|
|
138
|
+
i(this, "httpHeaders", new q());
|
|
139
|
+
i(this, "logger", new O());
|
|
140
|
+
i(this, "encoder", new k());
|
|
141
|
+
i(this, "isLoadingEnabled", !0);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Configura si el cliente debe mostrar estados de carga globales.
|
|
145
|
+
*
|
|
146
|
+
* @param {boolean} isLoadingEnabled - Si debe habilitar el indicador de carga global
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const client = new HttpClient()
|
|
151
|
+
* client.setIsLoadingEnabled(false) // Deshabilitar carga global
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
setIsLoadingEnabled(e) {
|
|
155
|
+
this.isLoadingEnabled = e;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Realiza una petición HTTP GET.
|
|
159
|
+
*
|
|
160
|
+
* @template T - Tipo de respuesta esperada
|
|
161
|
+
* @param {string} url - URL del endpoint
|
|
162
|
+
* @param {HttpOptions} options - Opciones de la petición (headers, params)
|
|
163
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* client.get<User[]>('/api/users', {
|
|
168
|
+
* params: { page: 1, limit: 10 },
|
|
169
|
+
* headers: { 'Authorization': 'Bearer token' }
|
|
170
|
+
* }).subscribe(users => console.log(users))
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
get(e, t = {}) {
|
|
174
|
+
const s = this.buildRequest("GET", e, null, t);
|
|
175
|
+
return this.request(s);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Realiza una petición HTTP POST.
|
|
179
|
+
*
|
|
180
|
+
* @template T - Tipo de respuesta esperada
|
|
181
|
+
* @param {string} url - URL del endpoint
|
|
182
|
+
* @param {any} body - Datos a enviar en el cuerpo de la petición
|
|
183
|
+
* @param {HttpOptions} options - Opciones de la petición (headers)
|
|
184
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* client.post<User>('/api/users', {
|
|
189
|
+
* name: 'Juan Pérez',
|
|
190
|
+
* email: 'juan@example.com'
|
|
191
|
+
* }).subscribe(newUser => console.log('Creado:', newUser))
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
post(e, t, s = {}) {
|
|
195
|
+
const r = this.buildRequest("POST", e, t, s);
|
|
196
|
+
return this.request(r);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Realiza una petición HTTP PUT.
|
|
200
|
+
*
|
|
201
|
+
* @template T - Tipo de respuesta esperada
|
|
202
|
+
* @param {string} url - URL del endpoint
|
|
203
|
+
* @param {any} body - Datos a enviar en el cuerpo de la petición
|
|
204
|
+
* @param {HttpOptions} options - Opciones de la petición (headers)
|
|
205
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
206
|
+
*/
|
|
207
|
+
put(e, t, s = {}) {
|
|
208
|
+
const r = this.buildRequest("PUT", e, t, s);
|
|
209
|
+
return this.request(r);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Realiza una petición HTTP PATCH.
|
|
213
|
+
*
|
|
214
|
+
* @template T - Tipo de respuesta esperada
|
|
215
|
+
* @param {string} url - URL del endpoint
|
|
216
|
+
* @param {any} body - Datos a enviar en el cuerpo de la petición
|
|
217
|
+
* @param {HttpOptions} options - Opciones de la petición (headers)
|
|
218
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
219
|
+
*/
|
|
220
|
+
patch(e, t, s = {}) {
|
|
221
|
+
const r = this.buildRequest("PATCH", e, t, s);
|
|
222
|
+
return this.request(r);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Realiza una petición HTTP DELETE.
|
|
226
|
+
*
|
|
227
|
+
* @template T - Tipo de respuesta esperada
|
|
228
|
+
* @param {string} url - URL del endpoint
|
|
229
|
+
* @param {HttpOptions} options - Opciones de la petición (headers, params)
|
|
230
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
231
|
+
*/
|
|
232
|
+
delete(e, t = {}) {
|
|
233
|
+
const s = this.buildRequest("DELETE", e, null, t);
|
|
234
|
+
return this.request(s);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Building configuration object request
|
|
238
|
+
*/
|
|
239
|
+
buildRequest(e, t, s, r) {
|
|
240
|
+
const a = {
|
|
241
|
+
url: t,
|
|
242
|
+
headers: r.headers,
|
|
243
|
+
method: e,
|
|
244
|
+
selector: (c) => c.json()
|
|
245
|
+
}, n = (/* @__PURE__ */ new Date()).toISOString(), u = y(n, y.URL);
|
|
246
|
+
if (e === "GET") {
|
|
247
|
+
const c = new URL(t, location.origin), E = r.params ?? {}, H = Object.entries(E).reduce((h, x) => {
|
|
248
|
+
const [l, $] = x;
|
|
249
|
+
if (h[l] = `${$}`, Object.hasOwn(E, l)) {
|
|
250
|
+
const f = E[l];
|
|
251
|
+
f != null && (h[l] = f);
|
|
252
|
+
}
|
|
253
|
+
return h;
|
|
254
|
+
}, {}), D = this.encoder.encode(H, u), b = JSON.parse(D);
|
|
255
|
+
for (const h of Object.keys(b))
|
|
256
|
+
c.searchParams.append(h, `${b[h]}`);
|
|
257
|
+
return { ...a, url: c.toString() };
|
|
258
|
+
}
|
|
259
|
+
if (new Headers(r.headers).get("Content-Type") === "multipart/form-data") {
|
|
260
|
+
const c = s;
|
|
261
|
+
return c.append(U, u), {
|
|
262
|
+
...a,
|
|
263
|
+
body: c
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
...a,
|
|
268
|
+
body: this.encoder.encode(s ?? {}, u)
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
request({
|
|
272
|
+
url: e,
|
|
273
|
+
...t
|
|
274
|
+
}) {
|
|
275
|
+
return p.getInstance().setSubject(this.isLoadingEnabled), this.httpHeaders.get(!1).pipe(
|
|
276
|
+
d((s) => {
|
|
277
|
+
const r = {
|
|
278
|
+
...s,
|
|
279
|
+
...t.headers
|
|
280
|
+
};
|
|
281
|
+
return S in r && r[S] === "multipart/form-data" && delete r[S], N(e, {
|
|
282
|
+
...t,
|
|
283
|
+
headers: r
|
|
284
|
+
}).pipe(
|
|
285
|
+
d((a) => m(this.encoder.decode(a))),
|
|
286
|
+
d((a) => {
|
|
287
|
+
if ("code" in a)
|
|
288
|
+
throw a;
|
|
289
|
+
return p.getInstance().setSubject(!1), this.logger.logDebug(
|
|
290
|
+
`HttpClient <URL>: ${e} <HEADERS>: ${JSON.stringify(t.headers)} <BODY> ${JSON.stringify(t.body)} <RESPONSE>: ${JSON.stringify(a)}`
|
|
291
|
+
), m(a);
|
|
292
|
+
}),
|
|
293
|
+
T((a) => (this.logger.logError(
|
|
294
|
+
`HttpClient <URL>: ${e} <HEADERS>: ${JSON.stringify(t.headers)} <BODY> ${JSON.stringify(t.body)} <ERROR>: ${JSON.stringify(a)}`
|
|
295
|
+
), p.getInstance().setSubject(!1), I.getInstance().setSubject(a), J))
|
|
296
|
+
);
|
|
297
|
+
})
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
export {
|
|
302
|
+
q as H,
|
|
303
|
+
U as R,
|
|
304
|
+
Z as a,
|
|
305
|
+
ee as b
|
|
306
|
+
};
|
package/dist/http/client.d.ts
CHANGED
|
@@ -1,15 +1,106 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { HttpOptions } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Cliente HTTP basado en RxJS con manejo automático de estados de carga y errores.
|
|
5
|
+
* Proporciona métodos para realizar peticiones HTTP con codificación/decodificación automática
|
|
6
|
+
* de datos y soporte para multipart/form-data.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { HttpClient } from '@mp-front/common/http'
|
|
11
|
+
*
|
|
12
|
+
* const client = new HttpClient()
|
|
13
|
+
*
|
|
14
|
+
* // Petición GET
|
|
15
|
+
* client.get<User[]>('/api/users').subscribe(users => {
|
|
16
|
+
* console.log('Usuarios:', users)
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* // Petición POST
|
|
20
|
+
* client.post<User>('/api/users', { name: 'Juan', email: 'juan@example.com' })
|
|
21
|
+
* .subscribe(newUser => console.log('Usuario creado:', newUser))
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
3
24
|
export declare class HttpClient {
|
|
4
25
|
private readonly httpHeaders;
|
|
5
26
|
private readonly logger;
|
|
6
27
|
private readonly encoder;
|
|
7
28
|
private isLoadingEnabled;
|
|
29
|
+
/**
|
|
30
|
+
* Configura si el cliente debe mostrar estados de carga globales.
|
|
31
|
+
*
|
|
32
|
+
* @param {boolean} isLoadingEnabled - Si debe habilitar el indicador de carga global
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const client = new HttpClient()
|
|
37
|
+
* client.setIsLoadingEnabled(false) // Deshabilitar carga global
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
8
40
|
setIsLoadingEnabled(isLoadingEnabled: boolean): void;
|
|
41
|
+
/**
|
|
42
|
+
* Realiza una petición HTTP GET.
|
|
43
|
+
*
|
|
44
|
+
* @template T - Tipo de respuesta esperada
|
|
45
|
+
* @param {string} url - URL del endpoint
|
|
46
|
+
* @param {HttpOptions} options - Opciones de la petición (headers, params)
|
|
47
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* client.get<User[]>('/api/users', {
|
|
52
|
+
* params: { page: 1, limit: 10 },
|
|
53
|
+
* headers: { 'Authorization': 'Bearer token' }
|
|
54
|
+
* }).subscribe(users => console.log(users))
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
9
57
|
get<T>(url: string, options?: HttpOptions): Observable<T>;
|
|
58
|
+
/**
|
|
59
|
+
* Realiza una petición HTTP POST.
|
|
60
|
+
*
|
|
61
|
+
* @template T - Tipo de respuesta esperada
|
|
62
|
+
* @param {string} url - URL del endpoint
|
|
63
|
+
* @param {any} body - Datos a enviar en el cuerpo de la petición
|
|
64
|
+
* @param {HttpOptions} options - Opciones de la petición (headers)
|
|
65
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* client.post<User>('/api/users', {
|
|
70
|
+
* name: 'Juan Pérez',
|
|
71
|
+
* email: 'juan@example.com'
|
|
72
|
+
* }).subscribe(newUser => console.log('Creado:', newUser))
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
10
75
|
post<T>(url: string, body: any, options?: HttpOptions): Observable<T>;
|
|
76
|
+
/**
|
|
77
|
+
* Realiza una petición HTTP PUT.
|
|
78
|
+
*
|
|
79
|
+
* @template T - Tipo de respuesta esperada
|
|
80
|
+
* @param {string} url - URL del endpoint
|
|
81
|
+
* @param {any} body - Datos a enviar en el cuerpo de la petición
|
|
82
|
+
* @param {HttpOptions} options - Opciones de la petición (headers)
|
|
83
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
84
|
+
*/
|
|
11
85
|
put<T>(url: string, body: any, options?: HttpOptions): Observable<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Realiza una petición HTTP PATCH.
|
|
88
|
+
*
|
|
89
|
+
* @template T - Tipo de respuesta esperada
|
|
90
|
+
* @param {string} url - URL del endpoint
|
|
91
|
+
* @param {any} body - Datos a enviar en el cuerpo de la petición
|
|
92
|
+
* @param {HttpOptions} options - Opciones de la petición (headers)
|
|
93
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
94
|
+
*/
|
|
12
95
|
patch<T>(url: string, body: any, options?: HttpOptions): Observable<T>;
|
|
96
|
+
/**
|
|
97
|
+
* Realiza una petición HTTP DELETE.
|
|
98
|
+
*
|
|
99
|
+
* @template T - Tipo de respuesta esperada
|
|
100
|
+
* @param {string} url - URL del endpoint
|
|
101
|
+
* @param {HttpOptions} options - Opciones de la petición (headers, params)
|
|
102
|
+
* @returns {Observable<T>} Observable con la respuesta decodificada
|
|
103
|
+
*/
|
|
13
104
|
delete<T>(url: string, options?: HttpOptions): Observable<T>;
|
|
14
105
|
/**
|
|
15
106
|
* Building configuration object request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAKtC,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAKtC,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,cAAc,CAAA;AAMtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC,OAAO,CAAC,gBAAgB,CAAgB;IAExC;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,OAAO;IAI7C;;;;;;;;;;;;;;;OAeG;IACI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAAC,CAAC,CAAC;IAKpE;;;;;;;;;;;;;;;;OAgBG;IACI,IAAI,CAAC,CAAC,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,WAAgB,GACxB,UAAU,CAAC,CAAC,CAAC;IAKhB;;;;;;;;OAQG;IACI,GAAG,CAAC,CAAC,EACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,WAAgB,GACxB,UAAU,CAAC,CAAC,CAAC;IAKhB;;;;;;;;OAQG;IACI,KAAK,CAAC,CAAC,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,WAAgB,GACxB,UAAU,CAAC,CAAC,CAAC;IAKhB;;;;;;;OAOG;IACI,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAAC,CAAC,CAAC;IAKvE;;OAEG;IACH,OAAO,CAAC,YAAY;IA8DpB,OAAO,CAAC,OAAO;CA+ChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/http/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAc,CAAA;AACzC,eAAO,MAAM,gBAAgB,iBAAiB,CAAA"}
|
|
@@ -1,22 +1,134 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { Session } from 'next-auth';
|
|
3
3
|
import { RuntimeError } from '../errors';
|
|
4
|
-
interface
|
|
4
|
+
interface MiddlewareOptions<ApiMiddlewareRequest> {
|
|
5
|
+
params: ApiMiddlewareRequest;
|
|
6
|
+
/** ID único de la petición para seguimiento */
|
|
5
7
|
requestID: string;
|
|
8
|
+
/** Headers de la petición HTTP */
|
|
6
9
|
headers: Headers;
|
|
7
10
|
}
|
|
11
|
+
interface MiddlewareFileOptions<ApiMiddlewareRequest> extends MiddlewareOptions<ApiMiddlewareRequest> {
|
|
12
|
+
files: File[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Middleware de API para Next.js con codificación/decodificación automática de datos.
|
|
16
|
+
* Proporciona funcionalidades para manejar peticiones HTTP con sesiones de usuario,
|
|
17
|
+
* logging automático y soporte para datos de formulario y archivos.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { ApiMiddleware } from '@mp-front/common/middleware'
|
|
22
|
+
* import { of } from 'rxjs'
|
|
23
|
+
*
|
|
24
|
+
* class UserApiMiddleware extends ApiMiddleware {
|
|
25
|
+
* createUser = this.get<CreateUserRequest, CreateUserResponse>(
|
|
26
|
+
* (params, { requestID }) => {
|
|
27
|
+
* // Lógica de negocio
|
|
28
|
+
* return of({ id: '123', ...params })
|
|
29
|
+
* }
|
|
30
|
+
* )
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* export const POST = new UserApiMiddleware().createUser
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
8
36
|
export declare class ApiMiddleware {
|
|
9
37
|
private readonly encoder;
|
|
10
38
|
private readonly logger;
|
|
11
39
|
protected requestID: string;
|
|
12
40
|
private session;
|
|
41
|
+
/**
|
|
42
|
+
* Establece la sesión de usuario para el middleware.
|
|
43
|
+
*
|
|
44
|
+
* @param {Session} session - Sesión de NextAuth
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const middleware = new ApiMiddleware()
|
|
49
|
+
* middleware.setSession(session)
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
13
52
|
setSession(session: Session): void;
|
|
53
|
+
/**
|
|
54
|
+
* Obtiene la sesión de usuario actual.
|
|
55
|
+
*
|
|
56
|
+
* @returns {Session} La sesión de usuario activa
|
|
57
|
+
* @throws {RuntimeError} Si no hay sesión establecida
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const session = this.getSession()
|
|
62
|
+
* console.log('Usuario:', session.user.email)
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
14
65
|
getSession(): Session;
|
|
66
|
+
/**
|
|
67
|
+
* Retorna una respuesta HTTP exitosa con datos codificados.
|
|
68
|
+
*
|
|
69
|
+
* @template ApiMiddlewareResponse - Tipo de la respuesta
|
|
70
|
+
* @param {ApiMiddlewareResponse} response - Datos de respuesta
|
|
71
|
+
* @param {string} requestID - ID de la petición (opcional)
|
|
72
|
+
* @returns {Response} Respuesta HTTP con status 200
|
|
73
|
+
*/
|
|
15
74
|
protected returnData<ApiMiddlewareResponse>(response: ApiMiddlewareResponse, requestID?: string): Response;
|
|
75
|
+
/**
|
|
76
|
+
* Retorna una respuesta HTTP de error.
|
|
77
|
+
*
|
|
78
|
+
* @param {RuntimeError} error - Error a retornar
|
|
79
|
+
* @returns {Response} Respuesta HTTP con status 520
|
|
80
|
+
*/
|
|
16
81
|
protected returnError(error: RuntimeError): Response;
|
|
17
82
|
private getBody;
|
|
18
|
-
|
|
19
|
-
|
|
83
|
+
private transformFormData;
|
|
84
|
+
/**
|
|
85
|
+
* Crea un manejador de peticiones HTTP con codificación/decodificación automática.
|
|
86
|
+
*
|
|
87
|
+
* @template ApiMiddlewareRequest - Tipo de los parámetros de entrada
|
|
88
|
+
* @template ApiMiddlewareResponse - Tipo de la respuesta (por defecto igual a ApiMiddlewareRequest)
|
|
89
|
+
* @param {function} handle - Función que procesa la petición
|
|
90
|
+
* @returns {function} Manejador de peticiones para Next.js API routes
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const createUser = this.get<CreateUserRequest, CreateUserResponse>(
|
|
95
|
+
* (params, { requestID, headers }) => {
|
|
96
|
+
* // Validación
|
|
97
|
+
* if (!params.email) {
|
|
98
|
+
* throw new RuntimeError('VALIDATION_ERROR', requestID)
|
|
99
|
+
* }
|
|
100
|
+
*
|
|
101
|
+
* // Lógica de negocio
|
|
102
|
+
* return of({ id: generateId(), ...params })
|
|
103
|
+
* }
|
|
104
|
+
* )
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
get<ApiMiddlewareRequest, ApiMiddlewareResponse = ApiMiddlewareRequest>(handle: (options: MiddlewareOptions<ApiMiddlewareRequest>) => Observable<ApiMiddlewareResponse>): (req: Request) => Promise<Response>;
|
|
108
|
+
/**
|
|
109
|
+
* Crea un manejador de peticiones para datos de formulario con archivos.
|
|
110
|
+
*
|
|
111
|
+
* @template ApiMiddlewareResponse - Tipo de la respuesta
|
|
112
|
+
* @template ApiMiddlewareRequest - Tipo de los parámetros (por defecto object)
|
|
113
|
+
* @param {function} handle - Función que procesa la petición con archivos
|
|
114
|
+
* @returns {function} Manejador de peticiones para Next.js API routes
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const uploadFiles = this.getFormData<UploadResponse>(
|
|
119
|
+
* (params, files) => {
|
|
120
|
+
* console.log('Archivos recibidos:', files.length)
|
|
121
|
+
* return of({
|
|
122
|
+
* uploadedFiles: files.map(f => ({
|
|
123
|
+
* name: f.name,
|
|
124
|
+
* size: f.size
|
|
125
|
+
* }))
|
|
126
|
+
* })
|
|
127
|
+
* }
|
|
128
|
+
* )
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
getFormData<ApiMiddlewareResponse, ApiMiddlewareRequest = object>(handle: (options: MiddlewareFileOptions<ApiMiddlewareRequest>) => Observable<ApiMiddlewareResponse>): (req: Request) => Promise<Response>;
|
|
20
132
|
}
|
|
21
133
|
export {};
|
|
22
134
|
//# sourceMappingURL=api-middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/api-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"api-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/api-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAA;AAGzD,UAAU,iBAAiB,CAAC,oBAAoB;IAC9C,MAAM,EAAE,oBAAoB,CAAA;IAC5B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,UAAU,qBAAqB,CAC7B,oBAAoB,CACpB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC;IAC/C,KAAK,EAAE,IAAI,EAAE,CAAA;CACd;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;;;;;;;;OAUG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAIlC;;;;;;;;;;;OAWG;IACI,UAAU;IASjB;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAAC,qBAAqB,EACxC,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ;IAKX;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY;YAI3B,OAAO;IAsBrB,OAAO,CAAC,iBAAiB;IAgBzB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,GAAG,oBAAoB,EACpE,MAAM,EAAE,CACN,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,KAC7C,UAAU,CAAC,qBAAqB,CAAC,SAInB,OAAO;IA+C5B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,WAAW,CAAC,qBAAqB,EAAE,oBAAoB,GAAG,MAAM,EAC9D,MAAM,EAAE,CACN,OAAO,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,KACjD,UAAU,CAAC,qBAAqB,CAAC,SAInB,OAAO;CA2B7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var h=(u,t,r)=>t in u?m(u,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):u[t]=r;var l=(u,t,r)=>h(u,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./default-errors-DiEIEEE2.cjs"),E=require("./i18n-vIm9wuAG.cjs"),D=require("./client-AVep4jK5.cjs"),e=require("rxjs"),f=require("./logger-BMbeDoGU.cjs"),R=require("./encoder-BEp9qfLf.cjs");require("node-jose");require("crypto");class S{constructor(){l(this,"encoder",new R.Encoder);l(this,"logger",new f.Logger);l(this,"requestID","");l(this,"session",null)}setSession(t){this.session=t}getSession(){if(!this.session)throw new d.RuntimeError(d.RuntimeErrorCode.AUTHENTICATION_ERROR,this.requestID);return this.session}returnData(t,r){const s=this.encoder.encode(t,r);return new Response(s,{status:200})}returnError(t){return new Response(JSON.stringify(t),{status:520})}async getBody(t){if(t.method==="GET"){const{searchParams:n}=new URL(t.url);if(n!=null&&n.entries()){const i=[...n.entries()].reduce((a,[g,c])=>(a[g]=c,a),{}),o=i.requestID??"";return{data:i,requestID:o}}return{data:{},requestID:""}}const r=await t.json(),s=(r==null?void 0:r.requestID)??"";return{data:r,requestID:s}}transformFormData(t){return t.entries().reduce((r,s)=>{const[n,i]=s;return D.REQUEST_ID_KEY===n?r:i instanceof File?(r.files=[...r.files,i],r):(r.params[n]=i,r)},{params:{},files:[]})}get(t){return this.logger.logDebug("get ApiMiddleware"),async r=>{const{data:s,requestID:n}=await this.getBody(r);this.logger.logDebug("return ApiMiddleware",JSON.stringify(s)),this.requestID=n;try{const i=await e.firstValueFrom(e.of(r).pipe(e.switchMap(o=>e.forkJoin({params:e.of(this.encoder.decode(s)),headers:e.of(o.headers)})),e.switchMap(({params:o,headers:a})=>e.forkJoin({response:t({params:o,requestID:this.requestID,headers:a}),headers:e.of(a),params:e.of(o)})),e.switchMap(({params:o,response:a,headers:g})=>(this.logger.logDebug(`ApiMiddleware \\x1b[37m <URL>: \\x1b[33m ${r.url} \\x1b[37m <HEADERS>: \\x1b[33m ${JSON.stringify(g)} \\x1b[37m <REQUEST ID> \\x1b[33m ${this.requestID} \\x1b[37m <PARAMS> \\x1b[33m ${JSON.stringify(o)} \\x1b[37m <RESPONSE>: \\x1b[33m ${JSON.stringify(a)}`),e.of(a)))));return this.logger.logDebug("ApiMiddleware subscribe next",JSON.stringify(i)),this.returnData(i,this.requestID)}catch(i){return this.logger.logError(`ApiMiddleware <URL>: ${r==null?void 0:r.url} <HEADERS>: ${JSON.stringify(r==null?void 0:r.headers)} <REQUEST ID> ${this.requestID} <PARAMS> ${JSON.stringify(r==null?void 0:r.body)} <ERROR>: ${JSON.stringify(i)}`),this.returnError({...i,requestID:this.requestID})}}}getFormData(t){return this.logger.logDebug("get FormData ApiMiddleware"),async r=>{try{const s=await r.formData(),{params:n,files:i}=this.transformFormData(s);this.requestID=s.get("requestID");const o=r.headers,a=await e.firstValueFrom(t({params:n,headers:o,files:i,requestID:this.requestID}).pipe(e.switchMap(g=>(this.logger.logDebug(`ApiMiddleware FormData \\x1b[37m <URL>: \\x1b[33m ${r.url} \\x1b[37m <HEADERS>: \\x1b[33m ${JSON.stringify(o)} \\x1b[37m <REQUEST ID> \\x1b[33m ${this.requestID} \\x1b[37m <PARAMS> \\x1b[33m ${JSON.stringify(n)} \\x1b[37m <RESPONSE>: \\x1b[33m ${JSON.stringify(g)}`),e.of(g)))));return this.returnData(a,this.requestID)}catch(s){return this.logger.logError(`ApiMiddleware FormData <URL>: ${r==null?void 0:r.url} <HEADERS>: ${JSON.stringify(r==null?void 0:r.headers)} <REQUEST ID> ${this.requestID} <PARAMS> ${JSON.stringify(r==null?void 0:r.body)} <ERROR>: ${JSON.stringify(s)}`),this.returnError({...s,requestID:this.requestID})}}}}exports.ErrorHandler=d.ErrorHandler;exports.RuntimeError=d.RuntimeError;exports.RuntimeErrorCode=d.RuntimeErrorCode;exports.commonErrors=d.commonErrors;exports.errorTranslations=E.translation;exports.HttpBackend=D.HttpBackend;exports.HttpClient=D.HttpClient;exports.HttpHeaders=D.HttpHeaders;exports.ApiMiddleware=S;
|