@fiado/api-invoker 5.121.0 → 5.123.0

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.
@@ -21,6 +21,7 @@ import { CardApi } from "./card/index.js";
21
21
  import { TransactionPublisher } from "./transaction/index.js";
22
22
  import { ContractGeneratorApi } from "./contract-generator/index.js";
23
23
  import ContractBusinessApi from "./contract-business/api/ContractBusinessApi.js";
24
+ import PdfRenderBusinessApi from "./pdf-render-business/api/PdfRenderBusinessApi.js";
24
25
  import MilestoneBusinessApi from "./milestone-business/api/MilestoneBusinessApi.js";
25
26
  import CreditStatementsApi from "./credit-statements/api/CreditStatementsApi.js";
26
27
  import ProductCatalogApi from "./product-catalog/ProductCatalogApi.js";
@@ -174,6 +175,7 @@ export const apiInvokerBindings = new ContainerModule(({ bind }) => {
174
175
  bind("ICardApi").to(CardApi);
175
176
  bind("IContractGeneratorApi").to(ContractGeneratorApi);
176
177
  bind("IContractBusinessApi").to(ContractBusinessApi);
178
+ bind("IPdfRenderBusinessApi").to(PdfRenderBusinessApi);
177
179
  bind("IMilestoneBusinessApi").to(MilestoneBusinessApi);
178
180
  bind("ICreditStatementsApi").to(CreditStatementsApi);
179
181
  bind("ICollectorApi").to(CollectorApi);
package/bin/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export * from "./authentication/index.js";
19
19
  export * from "./transaction/index.js";
20
20
  export * from "./contract-generator/index.js";
21
21
  export * from "./contract-business/index.js";
22
+ export * from "./pdf-render-business/index.js";
22
23
  export * from "./credit-statements/index.js";
23
24
  export * from "./product-catalog/index.js";
24
25
  export * from "./collector/index.js";
package/bin/index.js CHANGED
@@ -19,6 +19,7 @@ export * from "./authentication/index.js";
19
19
  export * from "./transaction/index.js";
20
20
  export * from "./contract-generator/index.js";
21
21
  export * from "./contract-business/index.js";
22
+ export * from "./pdf-render-business/index.js";
22
23
  export * from "./credit-statements/index.js";
23
24
  export * from "./product-catalog/index.js";
24
25
  export * from "./collector/index.js";
@@ -0,0 +1,18 @@
1
+ import type { IHttpRequest } from "@fiado/http-client";
2
+ import type { DocumentUrlResponse, GeneratePdfRequest, MergePdfsRequest, PdfDocumentResponse, RenderDocumentRequest, RenderDocumentResponse } from "@fiado/type-kit/bin/pdfRender/index.js";
3
+ import type { IPdfRenderBusinessApi } from "./interfaces/IPdfRenderBusinessApi.js";
4
+ export default class PdfRenderBusinessApi implements IPdfRenderBusinessApi {
5
+ private httpRequest;
6
+ constructor(httpRequest: IHttpRequest);
7
+ render(request: RenderDocumentRequest): Promise<RenderDocumentResponse>;
8
+ generatePdf(request: GeneratePdfRequest): Promise<PdfDocumentResponse>;
9
+ mergePdfs(request: MergePdfsRequest): Promise<PdfDocumentResponse>;
10
+ getDocumentUrl(key: string): Promise<DocumentUrlResponse>;
11
+ /**
12
+ * `@fiado/http-client` devuelve el body HTTP completo, que en este Lambda es el envoltorio
13
+ * `ApiResponse`; el documento generado está en `data`.
14
+ */
15
+ private post;
16
+ /** La URL base se lee en cada llamada y se normaliza para no duplicar "/" al concatenar. */
17
+ private url;
18
+ }
@@ -0,0 +1,51 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { inject, injectable } from "inversify";
14
+ let PdfRenderBusinessApi = class PdfRenderBusinessApi {
15
+ httpRequest;
16
+ constructor(httpRequest) {
17
+ this.httpRequest = httpRequest;
18
+ }
19
+ async render(request) {
20
+ return await this.post("render", request);
21
+ }
22
+ async generatePdf(request) {
23
+ return await this.post("generate-pdf", request);
24
+ }
25
+ async mergePdfs(request) {
26
+ return await this.post("merge-pdfs", request);
27
+ }
28
+ async getDocumentUrl(key) {
29
+ const response = await this.httpRequest.get(this.url("documents/url"), { key });
30
+ return response.data;
31
+ }
32
+ /**
33
+ * `@fiado/http-client` devuelve el body HTTP completo, que en este Lambda es el envoltorio
34
+ * `ApiResponse`; el documento generado está en `data`.
35
+ */
36
+ async post(path, body) {
37
+ const response = await this.httpRequest.post(this.url(path), body);
38
+ return response.data;
39
+ }
40
+ /** La URL base se lee en cada llamada y se normaliza para no duplicar "/" al concatenar. */
41
+ url(path) {
42
+ const baseUrl = (process.env.PDF_RENDER_BUSINESS_LAMBDA_URL || "").replace(/\/+$/, "");
43
+ return `${baseUrl}/${path}`;
44
+ }
45
+ };
46
+ PdfRenderBusinessApi = __decorate([
47
+ injectable(),
48
+ __param(0, inject("IHttpRequest")),
49
+ __metadata("design:paramtypes", [Object])
50
+ ], PdfRenderBusinessApi);
51
+ export default PdfRenderBusinessApi;
@@ -0,0 +1,25 @@
1
+ import type { DocumentUrlResponse, GeneratePdfRequest, MergePdfsRequest, PdfDocumentResponse, RenderDocumentRequest, RenderDocumentResponse } from "@fiado/type-kit/bin/pdfRender/index.js";
2
+ /**
3
+ * Cliente de los endpoints privados de pdf-render-business.
4
+ *
5
+ * El Lambda responde con el envoltorio `ApiResponse` (`{ code, date, msg, data }`); este cliente
6
+ * lo desenvuelve y entrega directamente el contenido de `data`.
7
+ *
8
+ * Cada documento queda guardado en el bucket de contratos con la llave por convención
9
+ * (`{EMPRESA}/{TIPO}/{referenceId}/{uuid}.pdf`); la respuesta trae esa `key`, una URL firmada de
10
+ * 15 minutos y el `sha256`. El base64 sólo viene si el request pide `includeContent: true`.
11
+ *
12
+ * Errores: una respuesta HTTP distinta de 2xx se propaga como el error del cliente HTTP (axios).
13
+ *
14
+ * Variable de entorno requerida en el consumidor: `PDF_RENDER_BUSINESS_LAMBDA_URL`.
15
+ */
16
+ export interface IPdfRenderBusinessApi {
17
+ /** POST /render — PDF a partir de una plantilla publicada en el bucket de plantillas. */
18
+ render(request: RenderDocumentRequest): Promise<RenderDocumentResponse>;
19
+ /** POST /generate-pdf — PDF en A4 a partir de HTML ya resuelto por el consumidor. */
20
+ generatePdf(request: GeneratePdfRequest): Promise<PdfDocumentResponse>;
21
+ /** POST /merge-pdfs — une los PDFs en el orden recibido. */
22
+ mergePdfs(request: MergePdfsRequest): Promise<PdfDocumentResponse>;
23
+ /** GET /documents/url?key= — nueva URL firmada (15 min) de un documento ya guardado. */
24
+ getDocumentUrl(key: string): Promise<DocumentUrlResponse>;
25
+ }
@@ -0,0 +1,2 @@
1
+ export * from './api/PdfRenderBusinessApi.js';
2
+ export * from './api/interfaces/IPdfRenderBusinessApi.js';
@@ -0,0 +1,2 @@
1
+ export * from './api/PdfRenderBusinessApi.js';
2
+ export * from './api/interfaces/IPdfRenderBusinessApi.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "5.121.0",
3
+ "version": "5.123.0",
4
4
  "description": "Sirve como un puente entre diferentes funciones lambda, facilitando la comunicación entre ellas a través de invocaciones http",
5
5
  "type": "module",
6
6
  "main": "bin/index.js",
@@ -34,7 +34,7 @@
34
34
  "@fiado/gateway-adapter": "^3.14.0",
35
35
  "@fiado/http-client": "^2.0.1",
36
36
  "@fiado/logger": "^1.1.3",
37
- "@fiado/type-kit": "^3.522.0",
37
+ "@fiado/type-kit": "^3.526.0",
38
38
  "dotenv": "^16.4.7"
39
39
  },
40
40
  "peerDependencies": {
@@ -30,6 +30,8 @@ import { ITransactionApi, ITransactionPublisher, TransactionPublisher } from "./
30
30
  import { ContractGeneratorApi, IContractGeneratorApi } from "./contract-generator/index.js";
31
31
  import { IContractBusinessApi } from "./contract-business/index.js";
32
32
  import ContractBusinessApi from "./contract-business/api/ContractBusinessApi.js";
33
+ import { IPdfRenderBusinessApi } from "./pdf-render-business/index.js";
34
+ import PdfRenderBusinessApi from "./pdf-render-business/api/PdfRenderBusinessApi.js";
33
35
  import { IMilestoneBusinessApi } from "./milestone-business/index.js";
34
36
  import MilestoneBusinessApi from "./milestone-business/api/MilestoneBusinessApi.js";
35
37
  import { ICreditStatementsApi } from "./credit-statements/index.js";
@@ -246,6 +248,7 @@ export const apiInvokerBindings = new ContainerModule(({ bind }) => {
246
248
  bind<ICardApi>("ICardApi").to(CardApi);
247
249
  bind<IContractGeneratorApi>("IContractGeneratorApi").to(ContractGeneratorApi);
248
250
  bind<IContractBusinessApi>("IContractBusinessApi").to(ContractBusinessApi);
251
+ bind<IPdfRenderBusinessApi>("IPdfRenderBusinessApi").to(PdfRenderBusinessApi);
249
252
  bind<IMilestoneBusinessApi>("IMilestoneBusinessApi").to(MilestoneBusinessApi);
250
253
  bind<ICreditStatementsApi>("ICreditStatementsApi").to(CreditStatementsApi);
251
254
  bind<ICollectorApi>("ICollectorApi").to(CollectorApi);
package/src/index.ts CHANGED
@@ -19,6 +19,7 @@ export * from "./authentication/index.js";
19
19
  export * from "./transaction/index.js";
20
20
  export * from "./contract-generator/index.js";
21
21
  export * from "./contract-business/index.js";
22
+ export * from "./pdf-render-business/index.js";
22
23
  export * from "./credit-statements/index.js";
23
24
  export * from "./product-catalog/index.js";
24
25
  export * from "./collector/index.js";
@@ -0,0 +1,52 @@
1
+ import { inject, injectable } from "inversify";
2
+ import type { IHttpRequest } from "@fiado/http-client";
3
+ import type {
4
+ DocumentUrlResponse,
5
+ GeneratePdfRequest,
6
+ MergePdfsRequest,
7
+ PdfDocumentResponse,
8
+ RenderDocumentRequest,
9
+ RenderDocumentResponse,
10
+ } from "@fiado/type-kit/bin/pdfRender/index.js";
11
+ import type { IPdfRenderBusinessApi } from "./interfaces/IPdfRenderBusinessApi.js";
12
+
13
+ type FiadoApiResponse<T> = import("@fiado/type-kit/bin/apiResponse/dtos/FiadoApiResponse.js").default<T>;
14
+
15
+ @injectable()
16
+ export default class PdfRenderBusinessApi implements IPdfRenderBusinessApi {
17
+
18
+ constructor(@inject("IHttpRequest") private httpRequest: IHttpRequest) {
19
+ }
20
+
21
+ async render(request: RenderDocumentRequest): Promise<RenderDocumentResponse> {
22
+ return await this.post<RenderDocumentResponse>("render", request);
23
+ }
24
+
25
+ async generatePdf(request: GeneratePdfRequest): Promise<PdfDocumentResponse> {
26
+ return await this.post<PdfDocumentResponse>("generate-pdf", request);
27
+ }
28
+
29
+ async mergePdfs(request: MergePdfsRequest): Promise<PdfDocumentResponse> {
30
+ return await this.post<PdfDocumentResponse>("merge-pdfs", request);
31
+ }
32
+
33
+ async getDocumentUrl(key: string): Promise<DocumentUrlResponse> {
34
+ const response = await this.httpRequest.get<FiadoApiResponse<DocumentUrlResponse>>(this.url("documents/url"), { key });
35
+ return response.data;
36
+ }
37
+
38
+ /**
39
+ * `@fiado/http-client` devuelve el body HTTP completo, que en este Lambda es el envoltorio
40
+ * `ApiResponse`; el documento generado está en `data`.
41
+ */
42
+ private async post<T>(path: string, body: unknown): Promise<T> {
43
+ const response = await this.httpRequest.post<FiadoApiResponse<T>>(this.url(path), body);
44
+ return response.data;
45
+ }
46
+
47
+ /** La URL base se lee en cada llamada y se normaliza para no duplicar "/" al concatenar. */
48
+ private url(path: string): string {
49
+ const baseUrl = (process.env.PDF_RENDER_BUSINESS_LAMBDA_URL || "").replace(/\/+$/, "");
50
+ return `${baseUrl}/${path}`;
51
+ }
52
+ }
@@ -0,0 +1,36 @@
1
+ import type {
2
+ DocumentUrlResponse,
3
+ GeneratePdfRequest,
4
+ MergePdfsRequest,
5
+ PdfDocumentResponse,
6
+ RenderDocumentRequest,
7
+ RenderDocumentResponse,
8
+ } from "@fiado/type-kit/bin/pdfRender/index.js";
9
+
10
+ /**
11
+ * Cliente de los endpoints privados de pdf-render-business.
12
+ *
13
+ * El Lambda responde con el envoltorio `ApiResponse` (`{ code, date, msg, data }`); este cliente
14
+ * lo desenvuelve y entrega directamente el contenido de `data`.
15
+ *
16
+ * Cada documento queda guardado en el bucket de contratos con la llave por convención
17
+ * (`{EMPRESA}/{TIPO}/{referenceId}/{uuid}.pdf`); la respuesta trae esa `key`, una URL firmada de
18
+ * 15 minutos y el `sha256`. El base64 sólo viene si el request pide `includeContent: true`.
19
+ *
20
+ * Errores: una respuesta HTTP distinta de 2xx se propaga como el error del cliente HTTP (axios).
21
+ *
22
+ * Variable de entorno requerida en el consumidor: `PDF_RENDER_BUSINESS_LAMBDA_URL`.
23
+ */
24
+ export interface IPdfRenderBusinessApi {
25
+ /** POST /render — PDF a partir de una plantilla publicada en el bucket de plantillas. */
26
+ render(request: RenderDocumentRequest): Promise<RenderDocumentResponse>;
27
+
28
+ /** POST /generate-pdf — PDF en A4 a partir de HTML ya resuelto por el consumidor. */
29
+ generatePdf(request: GeneratePdfRequest): Promise<PdfDocumentResponse>;
30
+
31
+ /** POST /merge-pdfs — une los PDFs en el orden recibido. */
32
+ mergePdfs(request: MergePdfsRequest): Promise<PdfDocumentResponse>;
33
+
34
+ /** GET /documents/url?key= — nueva URL firmada (15 min) de un documento ya guardado. */
35
+ getDocumentUrl(key: string): Promise<DocumentUrlResponse>;
36
+ }
@@ -0,0 +1,2 @@
1
+ export * from './api/PdfRenderBusinessApi.js';
2
+ export * from './api/interfaces/IPdfRenderBusinessApi.js';