@ramiidv/arca-sdk 0.1.0 → 0.2.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.
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export { Arca } from "./arca.js";
2
+ // Errors
3
+ export { ArcaError, ArcaAuthError, ArcaWSFEError, ArcaSoapError, } from "./errors.js";
2
4
  // Constants / Enums
3
- export { ENDPOINTS, WSFE_NAMESPACE, CbteTipo, Concepto, DocTipo, IvaTipo, IVA_RATES, Moneda, TributoTipo, } from "./constants.js";
5
+ export { ENDPOINTS, WSFE_NAMESPACE, CbteTipo, Concepto, DocTipo, IvaTipo, IVA_RATES, Moneda, TributoTipo, NOTA_CREDITO_MAP, NOTA_DEBITO_MAP, } from "./constants.js";
4
6
  // Low-level clients (for advanced usage)
5
7
  export { WsaaClient } from "./wsaa.js";
6
8
  export { WsfeClient } from "./wsfe.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA0BjC,oBAAoB;AACpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,SAAS;AACT,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAkCrB,oBAAoB;AACpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -10,10 +10,10 @@ export declare function buildXml(obj: Record<string, any>): string;
10
10
  * Realiza una llamada SOAP genérica usando fetch nativo.
11
11
  * Retorna el XML de respuesta completo.
12
12
  */
13
- export declare function soapCall(endpoint: string, bodyContent: string, soapAction?: string): Promise<string>;
13
+ export declare function soapCall(endpoint: string, bodyContent: string, soapAction?: string, timeoutMs?: number): Promise<string>;
14
14
  /**
15
15
  * Realiza una llamada SOAP al WSFE (WSFEv1).
16
16
  * Construye el envelope con el namespace correcto y el SOAPAction.
17
17
  */
18
- export declare function wsfeSoapCall(endpoint: string, method: string, params: Record<string, any>): Promise<Record<string, any>>;
18
+ export declare function wsfeSoapCall(endpoint: string, method: string, params: Record<string, any>, timeoutMs?: number): Promise<Record<string, any>>;
19
19
  //# sourceMappingURL=soap-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"soap-client.d.ts","sourceRoot":"","sources":["../src/soap-client.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkD9B"}
1
+ {"version":3,"file":"soap-client.d.ts","sourceRoot":"","sources":["../src/soap-client.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkD9B"}
@@ -1,4 +1,5 @@
1
1
  import { XMLParser, XMLBuilder } from "fast-xml-parser";
2
+ import { ArcaSoapError } from "./errors.js";
2
3
  const xmlParser = new XMLParser({
3
4
  ignoreAttributes: false,
4
5
  attributeNamePrefix: "@_",
@@ -29,7 +30,7 @@ export function buildXml(obj) {
29
30
  * Realiza una llamada SOAP genérica usando fetch nativo.
30
31
  * Retorna el XML de respuesta completo.
31
32
  */
32
- export async function soapCall(endpoint, bodyContent, soapAction) {
33
+ export async function soapCall(endpoint, bodyContent, soapAction, timeoutMs = 30_000) {
33
34
  const soapEnvelope = `<?xml version="1.0" encoding="utf-8"?>
34
35
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
35
36
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -44,14 +45,29 @@ export async function soapCall(endpoint, bodyContent, soapAction) {
44
45
  if (soapAction) {
45
46
  headers["SOAPAction"] = `"${soapAction}"`;
46
47
  }
47
- const response = await fetch(endpoint, {
48
- method: "POST",
49
- headers,
50
- body: soapEnvelope,
51
- });
48
+ const controller = new AbortController();
49
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
50
+ let response;
51
+ try {
52
+ response = await fetch(endpoint, {
53
+ method: "POST",
54
+ headers,
55
+ body: soapEnvelope,
56
+ signal: controller.signal,
57
+ });
58
+ }
59
+ catch (err) {
60
+ if (err?.name === "AbortError") {
61
+ throw new ArcaSoapError(`SOAP request timeout after ${timeoutMs}ms: ${endpoint}`);
62
+ }
63
+ throw new ArcaSoapError(`SOAP request failed: ${err?.message ?? err}`);
64
+ }
65
+ finally {
66
+ clearTimeout(timer);
67
+ }
52
68
  const responseText = await response.text();
53
69
  if (!response.ok) {
54
- throw new Error(`SOAP HTTP ${response.status}: ${response.statusText}\n${responseText}`);
70
+ throw new ArcaSoapError(`SOAP HTTP ${response.status}: ${response.statusText}\n${responseText}`, response.status);
55
71
  }
56
72
  return responseText;
57
73
  }
@@ -59,7 +75,7 @@ export async function soapCall(endpoint, bodyContent, soapAction) {
59
75
  * Realiza una llamada SOAP al WSFE (WSFEv1).
60
76
  * Construye el envelope con el namespace correcto y el SOAPAction.
61
77
  */
62
- export async function wsfeSoapCall(endpoint, method, params) {
78
+ export async function wsfeSoapCall(endpoint, method, params, timeoutMs = 30_000) {
63
79
  const namespace = "http://ar.gov.afip.dif.FEV1/";
64
80
  const bodyContent = buildXml({
65
81
  [method]: {
@@ -68,31 +84,31 @@ export async function wsfeSoapCall(endpoint, method, params) {
68
84
  },
69
85
  });
70
86
  const soapAction = `${namespace}${method}`;
71
- const responseXml = await soapCall(endpoint, bodyContent, soapAction);
87
+ const responseXml = await soapCall(endpoint, bodyContent, soapAction, timeoutMs);
72
88
  const parsed = parseXml(responseXml);
73
89
  // Extraer el body del SOAP envelope
74
90
  const envelope = parsed["soap:Envelope"] ||
75
91
  parsed["soapenv:Envelope"] ||
76
92
  parsed["S:Envelope"];
77
93
  if (!envelope) {
78
- throw new Error(`Respuesta SOAP inválida:\n${responseXml}`);
94
+ throw new ArcaSoapError(`Respuesta SOAP inválida:\n${responseXml}`);
79
95
  }
80
96
  const body = envelope["soap:Body"] || envelope["soapenv:Body"] || envelope["S:Body"];
81
97
  if (!body) {
82
98
  // Verificar si hay un SOAP Fault
83
- throw new Error(`SOAP Body no encontrado en la respuesta:\n${responseXml}`);
99
+ throw new ArcaSoapError(`SOAP Body no encontrado en la respuesta:\n${responseXml}`);
84
100
  }
85
101
  // Verificar SOAP Fault
86
102
  const fault = body["soap:Fault"] || body["soapenv:Fault"] || body["S:Fault"];
87
103
  if (fault) {
88
104
  const faultString = fault.faultstring || fault.Reason || "Error desconocido";
89
- throw new Error(`SOAP Fault: ${faultString}`);
105
+ throw new ArcaSoapError(`SOAP Fault: ${faultString}`);
90
106
  }
91
107
  const responseKey = `${method}Response`;
92
108
  const resultKey = `${method}Result`;
93
109
  const methodResponse = body[responseKey];
94
110
  if (!methodResponse) {
95
- throw new Error(`Respuesta del método ${method} no encontrada:\n${responseXml}`);
111
+ throw new ArcaSoapError(`Respuesta del método ${method} no encontrada:\n${responseXml}`);
96
112
  }
97
113
  return methodResponse[resultKey] ?? methodResponse;
98
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"soap-client.js","sourceRoot":"","sources":["../src/soap-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"soap-client.js","sourceRoot":"","sources":["../src/soap-client.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -9,6 +9,8 @@ export interface ArcaConfig {
9
9
  production?: boolean;
10
10
  /** Tiempo de vida del token en minutos (default: 720 = 12 horas) */
11
11
  tokenTTLMinutes?: number;
12
+ /** Timeout para requests HTTP en milisegundos (default: 30000 = 30 segundos) */
13
+ requestTimeoutMs?: number;
12
14
  }
13
15
  export interface AccessTicket {
14
16
  token: string;
@@ -225,4 +227,98 @@ export interface CotizacionResult {
225
227
  Err: WsError | WsError[];
226
228
  };
227
229
  }
230
+ export interface LineItem {
231
+ /** Importe neto (sin IVA) */
232
+ neto: number;
233
+ /**
234
+ * Tipo de alícuota IVA (usar enum IvaTipo).
235
+ * Si no se especifica y exento=false, el item se trata como no gravado (ImpTotConc).
236
+ */
237
+ iva?: number;
238
+ /** Si true, el importe es exento de IVA (va a ImpOpEx) */
239
+ exento?: boolean;
240
+ }
241
+ export interface FacturarOpts {
242
+ /** Punto de venta */
243
+ ptoVta: number;
244
+ /** Tipo de comprobante (usar enum CbteTipo) */
245
+ cbteTipo: number;
246
+ /** Items de la factura con importes netos */
247
+ items: LineItem[];
248
+ /** Concepto. Default: PRODUCTOS. Se auto-detecta SERVICIOS si se provee `servicio` */
249
+ concepto?: number;
250
+ /** Tipo de documento del receptor (usar enum DocTipo). Default: CONSUMIDOR_FINAL */
251
+ docTipo?: number;
252
+ /** Número de documento del receptor. Default: 0 */
253
+ docNro?: number;
254
+ /** Fecha del comprobante (Date o string YYYYMMDD). Default: hoy (timezone Argentina) */
255
+ fecha?: Date | string;
256
+ /** Para servicios: fechas de período y vencimiento de pago */
257
+ servicio?: {
258
+ desde: Date | string;
259
+ hasta: Date | string;
260
+ vtoPago: Date | string;
261
+ };
262
+ /** Código de moneda (usar enum Moneda). Default: PES */
263
+ moneda?: string;
264
+ /** Cotización de la moneda. Default: 1 */
265
+ cotizacion?: number;
266
+ /** Tributos adicionales */
267
+ tributos?: Tributo[];
268
+ /** Datos opcionales (ej: CBU para FCE) */
269
+ opcionales?: Opcional[];
270
+ }
271
+ export interface ComprobanteRef {
272
+ /** Tipo del comprobante original (usar enum CbteTipo) */
273
+ tipo: number;
274
+ /** Punto de venta del comprobante original */
275
+ ptoVta: number;
276
+ /** Número del comprobante original */
277
+ nro: number;
278
+ /** CUIT del emisor (requerido para FCE) */
279
+ cuit?: number;
280
+ /** Fecha del comprobante original (Date o string YYYYMMDD) */
281
+ fecha?: Date | string;
282
+ }
283
+ export interface NotaCreditoOpts extends Omit<FacturarOpts, "cbteTipo"> {
284
+ /** Comprobante original al que se asocia la nota de crédito.
285
+ * El tipo de NC se infiere automáticamente del tipo del comprobante original. */
286
+ comprobanteOriginal: ComprobanteRef;
287
+ }
288
+ export interface NotaDebitoOpts extends Omit<FacturarOpts, "cbteTipo"> {
289
+ /** Comprobante original al que se asocia la nota de débito.
290
+ * El tipo de ND se infiere automáticamente del tipo del comprobante original. */
291
+ comprobanteOriginal: ComprobanteRef;
292
+ }
293
+ export interface Importes {
294
+ total: number;
295
+ neto: number;
296
+ iva: number;
297
+ exento: number;
298
+ noGravado: number;
299
+ tributos: number;
300
+ }
301
+ export interface FacturaResult {
302
+ /** Si el comprobante fue aprobado por ARCA */
303
+ aprobada: boolean;
304
+ /** CAE otorgado (solo si aprobada) */
305
+ cae?: string;
306
+ /** Fecha de vencimiento del CAE en formato YYYYMMDD */
307
+ caeVencimiento?: string;
308
+ /** Número de comprobante asignado */
309
+ cbteNro: number;
310
+ /** Punto de venta */
311
+ ptoVta: number;
312
+ /** Tipo de comprobante */
313
+ cbteTipo: number;
314
+ /** Importes calculados y enviados */
315
+ importes: Importes;
316
+ /** Observaciones de ARCA (pueden existir incluso si fue aprobada) */
317
+ observaciones: {
318
+ code: number;
319
+ msg: string;
320
+ }[];
321
+ /** Resultado crudo de FECAESolicitar */
322
+ raw: FECAESolicitarResult;
323
+ }
228
324
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/wsaa.d.ts CHANGED
@@ -5,17 +5,22 @@ export declare class WsaaClient {
5
5
  private production;
6
6
  private tokenTTLMinutes;
7
7
  private ticketCache;
8
+ private pendingLogins;
9
+ private timeoutMs;
8
10
  constructor(opts: {
9
11
  cert: string;
10
12
  key: string;
11
13
  production: boolean;
12
14
  tokenTTLMinutes: number;
15
+ timeoutMs: number;
13
16
  });
14
17
  /**
15
18
  * Obtiene un Ticket de Acceso (TA) para el servicio indicado.
16
19
  * Cachea el ticket y lo reutiliza si no expiró.
20
+ * Deduplicates concurrent login requests for the same service.
17
21
  */
18
22
  getAccessTicket(service: string): Promise<AccessTicket>;
23
+ private performLogin;
19
24
  /**
20
25
  * Invalida el ticket cacheado para un servicio.
21
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wsaa.d.ts","sourceRoot":"","sources":["../src/wsaa.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAwC;gBAE/C,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,OAAO,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB;IAOD;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAc7D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,OAAO,CAAC,SAAS;IAuBjB;;;OAGG;IACH,OAAO,CAAC,OAAO;IAgCf;;OAEG;YACW,QAAQ;CAuDvB"}
1
+ {"version":3,"file":"wsaa.d.ts","sourceRoot":"","sources":["../src/wsaa.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/C,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,OAAO,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB;IAQD;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAsB/C,YAAY;IAM1B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,OAAO,CAAC,SAAS;IAuBjB;;;OAGG;IACH,OAAO,CAAC,OAAO;IAgCf;;OAEG;YACW,QAAQ;CAuDvB"}
package/dist/wsaa.js CHANGED
@@ -1,32 +1,53 @@
1
1
  import forge from "node-forge";
2
2
  import { ENDPOINTS, WSAA_NAMESPACE } from "./constants.js";
3
3
  import { soapCall, parseXml, buildXml } from "./soap-client.js";
4
+ import { ArcaAuthError } from "./errors.js";
5
+ /** Margen de seguridad antes de considerar un token expirado (2 minutos). */
6
+ const EXPIRY_MARGIN_MS = 2 * 60_000;
4
7
  export class WsaaClient {
5
8
  cert;
6
9
  key;
7
10
  production;
8
11
  tokenTTLMinutes;
9
12
  ticketCache = new Map();
13
+ pendingLogins = new Map();
14
+ timeoutMs;
10
15
  constructor(opts) {
11
16
  this.cert = opts.cert;
12
17
  this.key = opts.key;
13
18
  this.production = opts.production;
14
19
  this.tokenTTLMinutes = opts.tokenTTLMinutes;
20
+ this.timeoutMs = opts.timeoutMs;
15
21
  }
16
22
  /**
17
23
  * Obtiene un Ticket de Acceso (TA) para el servicio indicado.
18
24
  * Cachea el ticket y lo reutiliza si no expiró.
25
+ * Deduplicates concurrent login requests for the same service.
19
26
  */
20
27
  async getAccessTicket(service) {
21
28
  const cached = this.ticketCache.get(service);
22
- if (cached && cached.expirationTime > new Date()) {
29
+ if (cached && cached.expirationTime.getTime() - Date.now() > EXPIRY_MARGIN_MS) {
23
30
  return cached;
24
31
  }
32
+ // Dedup: si ya hay un login en curso para este servicio, reusar la promesa
33
+ const pending = this.pendingLogins.get(service);
34
+ if (pending)
35
+ return pending;
36
+ const loginPromise = this.performLogin(service);
37
+ this.pendingLogins.set(service, loginPromise);
38
+ try {
39
+ const ticket = await loginPromise;
40
+ this.ticketCache.set(service, ticket);
41
+ return ticket;
42
+ }
43
+ finally {
44
+ this.pendingLogins.delete(service);
45
+ }
46
+ }
47
+ async performLogin(service) {
25
48
  const tra = this.createTRA(service);
26
49
  const cms = this.signTRA(tra);
27
- const ticket = await this.loginCms(cms);
28
- this.ticketCache.set(service, ticket);
29
- return ticket;
50
+ return this.loginCms(cms);
30
51
  }
31
52
  /**
32
53
  * Invalida el ticket cacheado para un servicio.
@@ -96,7 +117,7 @@ export class WsaaClient {
96
117
  ? ENDPOINTS.wsaa.production
97
118
  : ENDPOINTS.wsaa.testing;
98
119
  const soapBody = `<loginCms xmlns="${WSAA_NAMESPACE}"><in0>${cmsBase64}</in0></loginCms>`;
99
- const responseXml = await soapCall(endpoint, soapBody, "loginCms");
120
+ const responseXml = await soapCall(endpoint, soapBody, "loginCms", this.timeoutMs);
100
121
  const parsed = parseXml(responseXml);
101
122
  // Navegar la estructura del response SOAP
102
123
  const envelope = parsed["soapenv:Envelope"] ||
@@ -108,7 +129,7 @@ export class WsaaClient {
108
129
  const loginResponse = body?.loginCmsResponse || body?.["ns2:loginCmsResponse"];
109
130
  const loginReturn = loginResponse?.loginCmsReturn || loginResponse?.["ns2:loginCmsReturn"];
110
131
  if (!loginReturn) {
111
- throw new Error(`WSAA: respuesta inesperada del servidor.\n${responseXml}`);
132
+ throw new ArcaAuthError(`WSAA: respuesta inesperada del servidor.\n${responseXml}`);
112
133
  }
113
134
  // loginReturn es un XML string embebido, parsearlo
114
135
  const taXml = parseXml(loginReturn);
@@ -117,7 +138,7 @@ export class WsaaClient {
117
138
  const token = taXml.loginTicketResponse?.credentials?.token ?? credentials?.token;
118
139
  const sign = taXml.loginTicketResponse?.credentials?.sign ?? credentials?.sign;
119
140
  if (!token || !sign) {
120
- throw new Error(`WSAA: no se pudo obtener token/sign de la respuesta.\n${loginReturn}`);
141
+ throw new ArcaAuthError(`WSAA: no se pudo obtener token/sign de la respuesta.\n${loginReturn}`);
121
142
  }
122
143
  const headerExp = taXml.loginTicketResponse?.header?.expirationTime ??
123
144
  credentials?.expirationTime;
package/dist/wsaa.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"wsaa.js","sourceRoot":"","sources":["../src/wsaa.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wsaa.js","sourceRoot":"","sources":["../src/wsaa.ts"],"names":[],"mappings":"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"}
package/dist/wsfe.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import type { WsfeAuth, InvoiceRequest, FECAESolicitarResult, FECompConsultarResult, ServerStatus, ParamItem, MonedaItem, PtoVentaItem, CotizacionResult } from "./types.js";
2
2
  export declare class WsfeClient {
3
3
  private endpoint;
4
- constructor(production: boolean);
4
+ private timeoutMs;
5
+ constructor(production: boolean, timeoutMs?: number);
5
6
  /**
6
7
  * Solicita CAE (Código de Autorización Electrónica) para uno o más comprobantes.
7
8
  */
@@ -22,6 +23,10 @@ export declare class WsfeClient {
22
23
  * Obtiene los tipos de comprobante disponibles.
23
24
  */
24
25
  getTiposComprobante(auth: WsfeAuth): Promise<ParamItem[]>;
26
+ /**
27
+ * Obtiene los tipos de concepto disponibles.
28
+ */
29
+ getTiposConcepto(auth: WsfeAuth): Promise<ParamItem[]>;
25
30
  /**
26
31
  * Obtiene los tipos de documento disponibles.
27
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wsfe.d.ts","sourceRoot":"","sources":["../src/wsfe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAEd,oBAAoB,EAEpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAepB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;gBAEb,UAAU,EAAE,OAAO;IAU/B;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,oBAAoB,CAAC;IA4BhC;;OAEG;IACG,iBAAiB,CACrB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAelB;;OAEG;IACG,oBAAoB,CACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC;IAkBjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IAK3C;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW/D;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW7D;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAWvD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAWvD;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW3D;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW5D;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAW7D;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC;IAc5B;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1D,OAAO,CAAC,eAAe;CAsExB"}
1
+ {"version":3,"file":"wsfe.d.ts","sourceRoot":"","sources":["../src/wsfe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAEd,oBAAoB,EAEpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAcpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,UAAU,EAAE,OAAO,EAAE,SAAS,GAAE,MAAe;IAW3D;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,oBAAoB,CAAC;IA8BhC;;OAEG;IACG,iBAAiB,CACrB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAgBlB;;OAEG;IACG,oBAAoB,CACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC;IAkBjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IAK3C;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAY/D;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAY5D;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAY7D;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAYvD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAYvD;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAY3D;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAY5D;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY7D;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC;IAe5B;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAe1D,OAAO,CAAC,eAAe;CAsExB"}
package/dist/wsfe.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ENDPOINTS } from "./constants.js";
2
2
  import { wsfeSoapCall } from "./soap-client.js";
3
+ import { ArcaWSFEError } from "./errors.js";
3
4
  function toArray(val) {
4
5
  if (val === undefined || val === null)
5
6
  return [];
@@ -8,16 +9,17 @@ function toArray(val) {
8
9
  function checkErrors(result) {
9
10
  if (result.Errors) {
10
11
  const errs = toArray(result.Errors.Err);
11
- const msg = errs.map((e) => `[${e.Code}] ${e.Msg}`).join("; ");
12
- throw new Error(`WSFE Error: ${msg}`);
12
+ throw new ArcaWSFEError(errs.map((e) => ({ code: e.Code, msg: e.Msg })));
13
13
  }
14
14
  }
15
15
  export class WsfeClient {
16
16
  endpoint;
17
- constructor(production) {
17
+ timeoutMs;
18
+ constructor(production, timeoutMs = 30_000) {
18
19
  this.endpoint = production
19
20
  ? ENDPOINTS.wsfe.production
20
21
  : ENDPOINTS.wsfe.testing;
22
+ this.timeoutMs = timeoutMs;
21
23
  }
22
24
  // ============================================================
23
25
  // Facturación
@@ -40,7 +42,8 @@ export class WsfeClient {
40
42
  },
41
43
  },
42
44
  };
43
- const result = (await wsfeSoapCall(this.endpoint, "FECAESolicitar", params));
45
+ const result = (await wsfeSoapCall(this.endpoint, "FECAESolicitar", params, this.timeoutMs));
46
+ checkErrors(result);
44
47
  return result;
45
48
  }
46
49
  /**
@@ -51,7 +54,7 @@ export class WsfeClient {
51
54
  Auth: auth,
52
55
  PtoVta: ptoVta,
53
56
  CbteTipo: cbteTipo,
54
- }));
57
+ }, this.timeoutMs));
55
58
  checkErrors(result);
56
59
  return result.CbteNro;
57
60
  }
@@ -66,7 +69,7 @@ export class WsfeClient {
66
69
  CbteNro: cbteNro,
67
70
  PtoVta: ptoVta,
68
71
  },
69
- }));
72
+ }, this.timeoutMs));
70
73
  checkErrors(result);
71
74
  return result;
72
75
  }
@@ -77,23 +80,32 @@ export class WsfeClient {
77
80
  * Verifica el estado de los servidores de ARCA.
78
81
  */
79
82
  async serverStatus() {
80
- const result = await wsfeSoapCall(this.endpoint, "FEDummy", {});
83
+ const result = await wsfeSoapCall(this.endpoint, "FEDummy", {}, this.timeoutMs);
81
84
  return result;
82
85
  }
83
86
  /**
84
87
  * Obtiene los tipos de comprobante disponibles.
85
88
  */
86
89
  async getTiposComprobante(auth) {
87
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposCbte", { Auth: auth });
90
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposCbte", { Auth: auth }, this.timeoutMs);
88
91
  checkErrors(result);
89
92
  const items = result.ResultGet?.CbteTipo;
90
93
  return toArray(items);
91
94
  }
95
+ /**
96
+ * Obtiene los tipos de concepto disponibles.
97
+ */
98
+ async getTiposConcepto(auth) {
99
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposConcepto", { Auth: auth }, this.timeoutMs);
100
+ checkErrors(result);
101
+ const items = result.ResultGet?.ConceptoTipo;
102
+ return toArray(items);
103
+ }
92
104
  /**
93
105
  * Obtiene los tipos de documento disponibles.
94
106
  */
95
107
  async getTiposDocumento(auth) {
96
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposDoc", { Auth: auth });
108
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposDoc", { Auth: auth }, this.timeoutMs);
97
109
  checkErrors(result);
98
110
  const items = result.ResultGet?.DocTipo;
99
111
  return toArray(items);
@@ -102,7 +114,7 @@ export class WsfeClient {
102
114
  * Obtiene los tipos de IVA disponibles.
103
115
  */
104
116
  async getTiposIva(auth) {
105
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposIva", { Auth: auth });
117
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposIva", { Auth: auth }, this.timeoutMs);
106
118
  checkErrors(result);
107
119
  const items = result.ResultGet?.IvaTipo;
108
120
  return toArray(items);
@@ -111,7 +123,7 @@ export class WsfeClient {
111
123
  * Obtiene las monedas disponibles.
112
124
  */
113
125
  async getMonedas(auth) {
114
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposMonedas", { Auth: auth });
126
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposMonedas", { Auth: auth }, this.timeoutMs);
115
127
  checkErrors(result);
116
128
  const items = result.ResultGet?.Moneda;
117
129
  return toArray(items);
@@ -120,7 +132,7 @@ export class WsfeClient {
120
132
  * Obtiene los tipos de tributo disponibles.
121
133
  */
122
134
  async getTiposTributo(auth) {
123
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposTributos", { Auth: auth });
135
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposTributos", { Auth: auth }, this.timeoutMs);
124
136
  checkErrors(result);
125
137
  const items = result.ResultGet?.TributoTipo;
126
138
  return toArray(items);
@@ -129,7 +141,7 @@ export class WsfeClient {
129
141
  * Obtiene los tipos de opcionales disponibles.
130
142
  */
131
143
  async getTiposOpcional(auth) {
132
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposOpcional", { Auth: auth });
144
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetTiposOpcional", { Auth: auth }, this.timeoutMs);
133
145
  checkErrors(result);
134
146
  const items = result.ResultGet?.OpcionalTipo;
135
147
  return toArray(items);
@@ -138,7 +150,7 @@ export class WsfeClient {
138
150
  * Obtiene los puntos de venta habilitados.
139
151
  */
140
152
  async getPuntosVenta(auth) {
141
- const result = await wsfeSoapCall(this.endpoint, "FEParamGetPtosVenta", { Auth: auth });
153
+ const result = await wsfeSoapCall(this.endpoint, "FEParamGetPtosVenta", { Auth: auth }, this.timeoutMs);
142
154
  checkErrors(result);
143
155
  const items = result.ResultGet?.PtoVenta;
144
156
  return toArray(items);
@@ -150,7 +162,7 @@ export class WsfeClient {
150
162
  const result = (await wsfeSoapCall(this.endpoint, "FEParamGetCotizacion", {
151
163
  Auth: auth,
152
164
  MonId: monedaId,
153
- }));
165
+ }, this.timeoutMs));
154
166
  checkErrors(result);
155
167
  return result;
156
168
  }
@@ -158,7 +170,7 @@ export class WsfeClient {
158
170
  * Obtiene la cantidad máxima de registros por request de FECAESolicitar.
159
171
  */
160
172
  async getCantMaxRegistros(auth) {
161
- const result = await wsfeSoapCall(this.endpoint, "FECompTotXRequest", { Auth: auth });
173
+ const result = await wsfeSoapCall(this.endpoint, "FECompTotXRequest", { Auth: auth }, this.timeoutMs);
162
174
  checkErrors(result);
163
175
  return result.RegXReq ?? 0;
164
176
  }