@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.
@@ -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
- simpleHSet(key: string, field: string, value: string): Promise<number>;
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,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIpD,aAAa,CAAC,GAAG,EAAE,MAAM;CAGjC"}
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
+ };
@@ -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;AAKtE,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,mBAAmB,CAAC,gBAAgB,EAAE,OAAO;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAAC,CAAC,CAAC;IAK7D,IAAI,CAAC,CAAC,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,WAAgB,GACxB,UAAU,CAAC,CAAC,CAAC;IAKT,GAAG,CAAC,CAAC,EACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,WAAgB,GACxB,UAAU,CAAC,CAAC,CAAC;IAKT,KAAK,CAAC,CAAC,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,WAAgB,GACxB,UAAU,CAAC,CAAC,CAAC;IAKT,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"}
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,3 @@
1
+ export declare const REQUEST_ID_KEY = "requestID";
2
+ export declare const CONTENT_TYPE_KEY = "Content-Type";
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -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 IAdditionalParams {
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
- get<ApiMiddlewareRequest, ApiMiddlewareResponse = ApiMiddlewareRequest>(handle: (params: ApiMiddlewareRequest, additionalParams: IAdditionalParams) => Observable<ApiMiddlewareResponse>): (req: Request) => Promise<Response>;
19
- getFile<ApiMiddlewareResponse>(handle: (file: File) => Observable<ApiMiddlewareResponse>): (req: Request) => Promise<Response>;
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;AAEzD,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,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;IAE/B,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,UAAU;IASjB,SAAS,CAAC,UAAU,CAAC,qBAAqB,EACxC,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ;IAKX,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY;YAI3B,OAAO;IAsBrB,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,GAAG,oBAAoB,EACpE,MAAM,EAAE,CACN,MAAM,EAAE,oBAAoB,EAC5B,gBAAgB,EAAE,iBAAiB,KAChC,UAAU,CAAC,qBAAqB,CAAC,SAInB,OAAO;IA8C5B,OAAO,CAAC,qBAAqB,EAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC,qBAAqB,CAAC,SAItC,OAAO;CA4B7B"}
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 h=Object.defineProperty;var E=(a,r,e)=>r in a?h(a,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[r]=e;var l=(a,r,e)=>E(a,typeof r!="symbol"?r+"":r,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("./default-errors-DiEIEEE2.cjs"),f=require("./i18n-vIm9wuAG.cjs"),c=require("./client-BVAQF7Tb.cjs"),t=require("rxjs"),R=require("./logger-BMbeDoGU.cjs"),m=require("./encoder-BEp9qfLf.cjs");require("node-jose");require("crypto");class S{constructor(){l(this,"encoder",new m.Encoder);l(this,"logger",new R.Logger);l(this,"requestID","");l(this,"session",null)}setSession(r){this.session=r}getSession(){if(!this.session)throw new g.RuntimeError(g.RuntimeErrorCode.AUTHENTICATION_ERROR,this.requestID);return this.session}returnData(r,e){const s=this.encoder.encode(r,e);return new Response(s,{status:200})}returnError(r){return new Response(JSON.stringify(r),{status:520})}async getBody(r){if(r.method==="GET"){const{searchParams:n}=new URL(r.url);if(n!=null&&n.entries()){const i=[...n.entries()].reduce((u,[d,D])=>(u[d]=D,u),{}),o=i.requestID??"";return{data:i,requestID:o}}return{data:{},requestID:""}}const e=await r.json(),s=(e==null?void 0:e.requestID)??"";return{data:e,requestID:s}}get(r){return this.logger.logDebug("get ApiMiddleware"),async e=>{const{data:s,requestID:n}=await this.getBody(e);this.logger.logDebug("return ApiMiddleware",JSON.stringify(s)),this.requestID=n;try{const i=await t.firstValueFrom(t.of(e).pipe(t.switchMap(o=>t.forkJoin({params:t.of(this.encoder.decode(s)),headers:t.of(o.headers)})),t.switchMap(({params:o,headers:u})=>t.forkJoin({response:r(o,{requestID:this.requestID,headers:u}),headers:t.of(u),params:t.of(o)})),t.switchMap(({params:o,response:u,headers:d})=>(this.logger.logDebug(`ApiMiddleware \x1B[37m <URL>: \x1B[33m ${e.url} \x1B[37m <HEADERS>: \x1B[33m ${JSON.stringify(d)} \x1B[37m <REQUEST ID> \x1B[33m ${this.requestID} \x1B[37m <PARAMS> \x1B[33m ${JSON.stringify(o)} \x1B[37m <RESPONSE>: \x1B[33m ${JSON.stringify(u)}`),t.of(u)))));return this.logger.logDebug("ApiMiddleware subscribe next",JSON.stringify(i)),this.returnData(i,this.requestID)}catch(i){return this.logger.logError(`ApiMiddleware <URL>: ${e==null?void 0:e.url} <HEADERS>: ${JSON.stringify(e==null?void 0:e.headers)} <REQUEST ID> ${this.requestID} <PARAMS> ${JSON.stringify(e==null?void 0:e.body)} <ERROR>: ${JSON.stringify(i)}`),this.returnError({...i,requestID:this.requestID})}}}getFile(r){return this.logger.logDebug("get File ApiMiddleware"),async e=>{try{const s=await e.formData(),n=s.get("file");this.requestID=s.get("requestID");const i=await t.firstValueFrom(r(n).pipe(t.switchMap(o=>(this.logger.logDebug(`ApiMiddleware \x1B[37m <URL>: \x1B[33m ${e.url} \x1B[37m <REQUEST ID> \x1B[33m ${this.requestID} \x1B[37m <RESPONSE>: \x1B[33m ${JSON.stringify(o)}`),t.of(o)))));return this.logger.logDebug("ApiMiddleware File subscribe next",JSON.stringify(i)),this.returnData(i,this.requestID)}catch(s){return this.logger.logError(`ApiMiddleware <URL>: ${e==null?void 0:e.url} <HEADERS>: ${JSON.stringify(e==null?void 0:e.headers)} <REQUEST ID> ${this.requestID} <PARAMS> ${JSON.stringify(e==null?void 0:e.body)} <ERROR>: ${JSON.stringify(s)}`),this.returnError({...s,requestID:this.requestID})}}}}exports.ErrorHandler=g.ErrorHandler;exports.RuntimeError=g.RuntimeError;exports.RuntimeErrorCode=g.RuntimeErrorCode;exports.commonErrors=g.commonErrors;exports.errorTranslations=f.translation;exports.HttpBackend=c.HttpBackend;exports.HttpClient=c.HttpClient;exports.HttpHeaders=c.HttpHeaders;exports.ApiMiddleware=S;
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;