TransbankDevelopers / transbank-sdk-nodejs

Código fuente Transbank SDK para Node.js
https://transbankdevelopers.cl
BSD 3-Clause "New" or "Revised" License
36 stars 5 forks source link

Parámetros de Options #100

Closed sbaezamella closed 2 months ago

sbaezamella commented 3 months ago

Describe el bug

En la actualización a la version 5.0.0 de la 4.0.0, la clase Transaction permite recibir un parámetro opcional timeout declarado en el constructor pero no así en los tipos de la clase Options. Lo anterior ocasiona que se tenga que declarar una variable Options y pasarla directamente a Transaction. A qué se debe esta diferencia en los tipos? La clase lo declara requerido pero el constructor opcional.

Para reproducir

  1. Crea un objeto Transaction
    new WebpayPlus.Transaction({
    commerceCode,
    apiKey,
    environment,
    });
  2. Se ve un error de typescript del tipo Property 'timeout' is missing in type '{ commerceCode: string; apiKey: string; environment: string; }' but required in type 'Options'.ts(2345)

Comportamiento observado

Se recibe un error de typescript cuando no se pasa timeout directamente a Transaction pero se resuelve si se hace lo siguiente:

const options = new Options(
  commerceCodes[transactionType],
  apiKey,
  environment,
);
new WebpayPlus.Transaction(options)

Dentro de los tipos se ve así

declare class Options {
    /** Unique commerce identifier provided by Transbank */
    commerceCode: string;
    /** The secret used to authenticate against the API, it must be kept safe at all times. */
    apiKey: string;
    /** Environment correspond to the environment to use, it can be Integration or
     * Production, each has a unique URL. */
    environment: string;
    /** Timeout for requests in milliseconds */
    timeout: number;
    /**
     * Create an instance of Options
     * @param commerceCode unique commerce identifier provided by Transbank
     * @param apiKey the secret used to authenticate against the API, it must be kept safe at all times.
     * @param environment Environment correspond to the environment to use, it can be Integration or
     * Production, each has a unique URL.
     * @param timeout Timeout for requests in milliseconds
     */
    constructor(commerceCode: string, apiKey: string, environment: string, timeout?: number);
}

Creo que timeout declarado como propiedad de la clase debería ser opcional

Comportamiento esperado

Se espera que no se tenga que declarar una variable del tipo Options para no romper la implementación actual.

Versiones (por favor agrega aquí la siguiente información):

mastudillot commented 2 months ago

Hola, revisamos lo que comentas y quedo solucionado en el PR https://github.com/TransbankDevelopers/transbank-sdk-nodejs/pull/101

Quedará agregado en el siguiente release.