@ramiidv/arca-fecred 0.3.0 → 0.4.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/CHANGELOG.md ADDED
@@ -0,0 +1,124 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8c02c30: API uniforme entre los SDKs (los nombres anteriores siguen funcionando,
8
+ marcados `@deprecated`, hasta la próxima major):
9
+
10
+ - arca-facturacion: la clase principal es `ArcaFacturacion` (`Arca` queda como
11
+ alias). Nuevo `status()` → `{ wsfe, wsfex }` con `ServiceStatus` y el
12
+ `ServerStatus` de arca-common (`appserver`/`dbserver`/`authserver`);
13
+ `serverStatus()`/`serverStatusExpo()` y su `ServerStatus` en mayúsculas
14
+ quedan deprecados.
15
+ - arca-agro: `status()` (antes `serverStatus()`).
16
+ - arca-fecred: el cliente de bajo nivel es `client` (antes `fecred`).
17
+ - arca-common: `ServiceStatus` y `statusOf()` para el estado de varios servicios.
18
+ - bed68e8: Paquetes solo ESM y Node >= 20.19. `arca-common`, `arca-facturacion` y
19
+ `arca-padron` dejan de publicar un build CommonJS: desde CommonJS se cargan con
20
+ `require()` (require(esm), Node >= 20.19 / 22.12). Todos los paquetes pasan a
21
+ requerir Node >= 20.19.0 (Node 18 y 20 sin soporte). El código vive ahora en el
22
+ monorepo `arca-sdks`.
23
+ - f8bd053: Las clases principales extienden `ArcaSdkBase` de arca-common, así que todos
24
+ los SDKs tienen la misma base: `wsaa`, `cuit`, `production`, `on()`/`off()`,
25
+ `clearAuthCache()`, `config.wsaa` (WsaaClient compartido) y `config.signal`
26
+ (signal global). arca-mtxca acepta `endpoints: { mtxca, wsaa }` (`endpoint` y
27
+ `wsaaEndpoint` quedan deprecados). Los `dummy`/`status` validan la respuesta con
28
+ `parseServerStatus`: si falta un campo lanzan `ArcaSoapError`.
29
+ - c9f1444: Requests y respuestas se validan, serializan y decodifican con el DSL de
30
+ `@ramiidv/arca-common/schema`, transcripto del XSD oficial de cada servicio.
31
+
32
+ - Corrección: las respuestas se parsean sin conversión numérica, así que los
33
+ `xs:string` con contenido numérico ya no pierden ceros a la izquierda ni
34
+ decimales (ej: `"0012"`, `"1.50"`, `DocNro`, `codigoSeguridad`).
35
+ - Los campos desconocidos en el input se rechazan con `ArcaValidationError`
36
+ (antes se ignoraban).
37
+ - Todos los errores de validación se informan juntos (`details`), con mensajes
38
+ del tipo `campo: motivo`. Cambió el texto de los mensajes.
39
+ - arca-fecred deja de recortar espacios de los textos y envía `codCtaCte` tal
40
+ cual; porcentaje y cotización se envían con decimales fijos.
41
+
42
+ ### Patch Changes
43
+
44
+ - 20ecf7d: DSL de schemas, segunda versión:
45
+
46
+ - Corrección: `dec()` redondea sobre el valor decimal escrito (`8.575` →
47
+ `8.58`; antes daba `8.57` por la representación binaria). Afecta los importes
48
+ que los SDKs envían redondeados.
49
+ - `must()` rechaza también el valor vacío; los elementos `xsi:nil` cuentan
50
+ como ausentes (en una lista, como lista vacía); `must()` en listas exige el
51
+ elemento; un objeto opcional vacío se omite y uno obligatorio valida sus hijos.
52
+ - Al decodificar se validan enteros (`int()`) y valores permitidos
53
+ (`str({ values })`).
54
+ - Nuevos: `siNo()` (S/N ↔ boolean), `double()`, `xml(nombre, campo)` (nombre
55
+ distinto en el XML), `custom(encode, decode)`, `roundHalfUp()` y
56
+ `decodeResponse(..., { emptyLists: 'omit' })`.
57
+ - Updated dependencies [8c02c30]
58
+ - Updated dependencies [f8bd053]
59
+ - Updated dependencies [242fb5f]
60
+ - Updated dependencies [fd438bc]
61
+ - Updated dependencies [bed68e8]
62
+ - Updated dependencies [20ecf7d]
63
+ - Updated dependencies [b86db00]
64
+ - @ramiidv/arca-common@0.5.0
65
+
66
+ ## 0.3.0 (2026-11-01)
67
+
68
+ Revisión completa contra el WSDL de FECredService. La 0.2.0 no podía operar contra ARCA.
69
+
70
+ ### Breaking
71
+ - Requiere `@ramiidv/arca-common` `^0.4.0`. `ArcaFecredConfig` extiende `ArcaBaseConfig` (`cuit: number | string`).
72
+ - `consultarMontoObligadoRecepcion({ cuitConsultada, fechaEmision })`: ahora recibe un objeto (el XSD exige `fechaEmision`).
73
+ - `consultarCtasCtes` y `consultarComprobantes` reciben `{ rol, cuitContraparte?, fecha?: { tipo, desde, hasta }, ... }` (antes `fechaDesde`/`fechaHasta`/`cuitEmisor`/`cuitReceptor`, que no existen en el XSD) y devuelven `{ ctasCtes | comprobantes, nroPagina?, hayMas?, evento?, observaciones }` en lugar de un array.
74
+ - `aceptarFECred(params)`, `rechazarFECred(params)`: reciben `idCtaCte` (`{ codCtaCte }` o `{ idFactura }`) y los campos obligatorios del XSD (`saldoAceptado`, `codMoneda`, `cotizacionMonedaUlt`; `motivos[]` con `codMotivo`, `descMotivo`, `justificacion`). Devuelven `{ resultado, idCtaCte, evento?, observaciones }`.
75
+ - `informarFacturaAceptadaCancelada` se reemplaza por `informarCancelacionTotalFECred({ idCtaCte, formasCancelacion, importeCancelacion })` (la operación anterior no existe).
76
+ - `consultarTiposMotivoRechazo` → `consultarTiposMotivosRechazo`. Los `consultarTipos*` devuelven `{ codigo, descripcion }[]`; `consultarTiposRetenciones` devuelve `{ codigoJurisdiccion, descripcionJurisdiccion, porcentajeRetencion }[]`.
77
+ - Tipos de respuesta según el XSD (`InfoCtaCte`, `Comprobante`, `CuentaCorriente`, ...). `codCtaCte`, CUITs y `codAutorizacion` son `string`. Se eliminan `raw`, `CtaCte`, `ComprobanteFecred`, `RetencionFecred`, `*Item`, `WsFecredError`.
78
+ - `EstadoCtaCte` con los valores reales (`Modificable`, `Aceptada`, `Rechazada`, `CanceladaTotal`, `InformadaAgDpto`); `RolCtaCte`/`EstadoCtaCte` pasan a ser objetos `as const` + tipo literal.
79
+ - Se eliminan los enums inventados `MotivoRechazo`, `FormaCancelacion`, `TipoAjusteOperacion` y `TipoRetencion`: los códigos se obtienen con `consultarTipos*()`.
80
+ - `ENDPOINTS` ya no incluye `wsaa` (usar `WSAA_ENDPOINTS` de common) y `ENDPOINTS.wsfecred.namespace` es `http://ar.gob.afip.wsfecred/FECredService/`.
81
+ - `FecredClient`: recibe `{ token, sign, cuitRepresentada }` (o una función que lo devuelve), valida los parámetros y devuelve respuestas tipadas en lugar de `Record<string, unknown>`.
82
+ - `WsAuth` es `{ token, sign, cuitRepresentada }`.
83
+ - `clearAuthCache()` devuelve `Promise<void>`.
84
+ - Se eliminan `validateCuit` (usar el de common), `validateCodCtaCte`, `validateConsultaCtasCtes` y los re-exports de utilidades de common (`ensureArray`, `parseXml`, `buildXml`, `checkServiceErrors`, `SoapCallOptions`, `WsaaClientConfig`).
85
+
86
+ ### Features
87
+ - Nuevas operaciones del WSDL: `consultarObligadoRecepcion`, `consultarCtaCte`, `consultarHistorialEstadosComprobante`, `consultarHistorialEstadosCtaCte`, `obtenerRemitos`, `rechazarNotaDC`, `modificarOpcionTransferencia`, `informarFacturaAgtDptoCltv`, `consultarCuentasEnAgtDptoCltv` y `consultarFacturasAgtDptoCltv`.
88
+ - `aceptarFECred` soporta todos los opcionales del XSD (notas DC, formas de cancelación, retenciones, ajustes, tipo de cancelación, importes, CBU).
89
+ - Todos los métodos aceptan `opts?: CallOptions` (`signal`).
90
+ - Config: `ticketStorage`, `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs`, `tokenTTLMinutes`, `fetch`, `legacyTls`, `wsaa` (cliente propio) y `endpoints` (override).
91
+ - Enums del XSD: `EstadoComprobante`, `TipoFechaFiltro`, `OpcionTransferencia`, `TipoCancelacion`, `TipoAceptacion`, `Resultado`.
92
+ - Validación local según el XSD (CUIT con dígito verificador, fechas, importes con 2 decimales, rangos de punto de venta/número, textos 3..250, CBU) antes de pedir el ticket.
93
+ - Se exportan `ArcaValidationError`, `ArcaTicketVigenteError`, `FileTicketStorage` y `MemoryTicketStorage`.
94
+
95
+ ### Fixes
96
+ - Namespace correcto y `SOAPAction` en todas las operaciones (sin él ARCA responde `NullPointerException`); `dummy` con Body vacío.
97
+ - `authRequest` con `token`/`sign`/`cuitRepresentada` (ARCA respondía `wscommon_005`). La CUIT se envía como 11 dígitos.
98
+ - Wrapper `<operacionRequest>` según los elementos del XSD y campos en el orden del XSD (`idCtaCte` anidado, `fecha{tipo,desde,hasta}`, `rolCUITRepresentada`).
99
+ - `obligado` (`S`/`N`) se convertía a boolean con un cast: `'N'` era `true`.
100
+ - Los parsers leían contenedores inexistentes (`arrayCtasCtes`, `tipoComprobante`, ...) y devolvían listas vacías; ahora leen `arrayInfosCtaCte/infoCtaCte`, `arrayComprobantes/comprobante`, `codigoDescripcionReturn/arrayCodigoDescripcion/codigoDescripcion`, etc.
101
+ - Un campo obligatorio ausente en la respuesta lanza error en lugar de devolver `0`/`''`.
102
+ - `arrayErrores` y `arrayErroresFormato` (`codigoDescripcionString`) se lanzan como `ArcaServiceError`; `resultado = 'R'` también.
103
+ - Las operaciones se envían con `kind: 'emision'`: no se reintentan y un error de transporte queda `uncertain`.
104
+
105
+ ## 0.2.0 (2026-06-03)
106
+
107
+ - CI con GitHub Actions (Node 18/20/22) y workflow de release por tag.
108
+ - `homepage` apunta a arca-sdk.dev.
109
+ - Lockfile regenerado para resolver `@ramiidv/arca-common` desde npm (el build fallaba en CI).
110
+
111
+ ## 0.1.0 (2026-03-31)
112
+
113
+ ### Features
114
+ - Initial release
115
+ - Orchestrator class `ArcaFecred` with automatic WSAA authentication
116
+ - Check FCE obligation status (`consultarMontoObligadoRecepcion`)
117
+ - Query current accounts (`consultarCtasCtes`) and invoices (`consultarComprobantes`)
118
+ - Accept (`aceptarFECred`) and reject (`rechazarFECred`) electronic credit invoices
119
+ - Inform accepted FCE cancellation (`informarFacturaAceptadaCancelada`)
120
+ - Parameter queries: retention types, cancellation methods, adjustment types, rejection reasons
121
+ - Input validation with `ArcaValidationError` from `@ramiidv/arca-common`
122
+ - Low-level `FecredClient` for direct SOAP access
123
+ - Enums: `RolCtaCte`, `EstadoCtaCte`, `MotivoRechazo`, `FormaCancelacion`, `TipoAjusteOperacion`, `TipoRetencion`
124
+ - Health check via `status()` / `dummy()`
package/README.md CHANGED
@@ -29,7 +29,7 @@ import { ArcaFecred, FileTicketStorage } from '@ramiidv/arca-fecred';
29
29
  const fecred = new ArcaFecred({
30
30
  cert: readFileSync('./cert.pem', 'utf-8'),
31
31
  key: readFileSync('./key.pem', 'utf-8'),
32
- cuit: '20-12345678-6', // CUIT representada (number o string, con o sin guiones)
32
+ cuit: '20-12345678-6', // CUIT representada (number o string, con o sin guiones)
33
33
  production: false,
34
34
  ticketStorage: new FileTicketStorage('./.arca-tickets'),
35
35
  });
@@ -60,21 +60,21 @@ console.log(r.resultado); // 'A' o 'O' (un rechazo se lanza como ArcaServiceErro
60
60
 
61
61
  `ArcaFecredConfig` extiende `ArcaBaseConfig` de `@ramiidv/arca-common`:
62
62
 
63
- | Opción | Tipo | Default | Descripción |
64
- | --- | --- | --- | --- |
65
- | `cert`, `key` | `string` | — | Certificado y clave privada (PEM) |
66
- | `cuit` | `number \| string` | — | CUIT representada; se valida el dígito verificador y se envía como 11 dígitos |
67
- | `production` | `boolean` | `false` | Homologación o producción |
68
- | `timeout` | `number` | `30000` | Timeout HTTP (ms) |
69
- | `retries` / `retryDelayMs` | `number` | `1` / `1000` | Reintentos de **consultas** (las operaciones nunca se reintentan) |
70
- | `tokenTTLMinutes` | `number` | `720` | Vigencia pedida a WSAA |
71
- | `ticketStorage` | `TicketStorage` | — | Persistencia del TA (recomendado en producción: `FileTicketStorage` o propio) |
72
- | `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs` | | | Opciones de WSAA (ver arca-common) |
73
- | `fetch` | `typeof fetch` | `globalThis.fetch` | `fetch` propio (proxy, tests) |
74
- | `legacyTls` | `'auto' \| 'never' \| 'always'` | `'auto'` | Transporte TLS legacy |
75
- | `onEvent` | `(e: ArcaEvent) => void` | — | Eventos `auth:*` y `request:*` |
76
- | `wsaa` | `WsaaClient` | — | `WsaaClient` propio (compartir tickets entre SDKs) |
77
- | `endpoints` | `{ wsfecred?, wsaa? }` | — | Sobrescribe las URLs |
63
+ | Opción | Tipo | Default | Descripción |
64
+ | -------------------------------------------------------- | ------------------------------- | ------------------ | ----------------------------------------------------------------------------- |
65
+ | `cert`, `key` | `string` | — | Certificado y clave privada (PEM) |
66
+ | `cuit` | `number \| string` | — | CUIT representada; se valida el dígito verificador y se envía como 11 dígitos |
67
+ | `production` | `boolean` | `false` | Homologación o producción |
68
+ | `timeout` | `number` | `30000` | Timeout HTTP (ms) |
69
+ | `retries` / `retryDelayMs` | `number` | `1` / `1000` | Reintentos de **consultas** (las operaciones nunca se reintentan) |
70
+ | `tokenTTLMinutes` | `number` | `720` | Vigencia pedida a WSAA |
71
+ | `ticketStorage` | `TicketStorage` | — | Persistencia del TA (recomendado en producción: `FileTicketStorage` o propio) |
72
+ | `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs` | | | Opciones de WSAA (ver arca-common) |
73
+ | `fetch` | `typeof fetch` | `globalThis.fetch` | `fetch` propio (proxy, tests) |
74
+ | `legacyTls` | `'auto' \| 'never' \| 'always'` | `'auto'` | Transporte TLS legacy |
75
+ | `onEvent` | `(e: ArcaEvent) => void` | — | Eventos `auth:*` y `request:*` |
76
+ | `wsaa` | `WsaaClient` | — | `WsaaClient` propio (compartir tickets entre SDKs) |
77
+ | `endpoints` | `{ wsfecred?, wsaa? }` | — | Sobrescribe las URLs |
78
78
 
79
79
  Todos los métodos aceptan un último parámetro opcional `opts?: CallOptions` (`{ signal }`) para cancelar.
80
80
 
@@ -84,34 +84,34 @@ Fuente: WSDL de FECredService (`https://fwshomo.afip.gob.ar/wsfecred/FECredServi
84
84
 
85
85
  ### Consultas (se reintentan ante errores transitorios)
86
86
 
87
- | Método | Operación | Devuelve |
88
- | --- | --- | --- |
89
- | `status()` | `dummy` | `{ appserver, dbserver, authserver }` |
90
- | `consultarMontoObligadoRecepcion({ cuitConsultada, fechaEmision })` | idem | `{ obligado, montoDesde?, evento?, observaciones }` |
91
- | `consultarObligadoRecepcion(cuit)` | idem | `{ obligado, desde?, ... }` (campo `respuesta` del WS) |
92
- | `consultarCtasCtes({ rol, cuitContraparte?, fecha?, estadoCtaCte?, nroPagina?, opcionTransferencia? })` | idem | `{ ctasCtes: InfoCtaCte[], nroPagina?, hayMas?, ... }` |
93
- | `consultarCtaCte(idCtaCte)` | idem | `{ ctaCte: CuentaCorriente, ... }` |
94
- | `consultarComprobantes({ rol, cuitContraparte?, codTipoCmp?, estadoCmp?, fecha?, codCtaCte?, estadoCtaCte?, nroPagina? })` | idem | `{ comprobantes: Comprobante[], nroPagina?, hayMas?, ... }` |
95
- | `consultarHistorialEstadosComprobante(idComprobante)` | idem | `{ idComprobante, estados }` |
96
- | `consultarHistorialEstadosCtaCte(idCtaCte)` | idem | `{ idCtaCte, estados }` |
97
- | `obtenerRemitos(idComprobante)` | idem | `IdComprobante[]` |
98
- | `consultarCuentasEnAgtDptoCltv()` | idem | `{ cuentas, ... }` |
99
- | `consultarFacturasAgtDptoCltv({ idCtaCte?, fecha? })` | idem | `{ facturas, ... }` |
100
- | `consultarTiposRetenciones()` | idem | `{ codigoJurisdiccion, descripcionJurisdiccion, porcentajeRetencion }[]` |
101
- | `consultarTiposFormasCancelacion()` | idem | `{ codigo, descripcion }[]` |
102
- | `consultarTiposMotivosRechazo()` | idem | `{ codigo, descripcion }[]` |
103
- | `consultarTiposAjustesOperacion()` | idem | `{ codigo, descripcion }[]` |
87
+ | Método | Operación | Devuelve |
88
+ | -------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------ |
89
+ | `status()` | `dummy` | `{ appserver, dbserver, authserver }` |
90
+ | `consultarMontoObligadoRecepcion({ cuitConsultada, fechaEmision })` | idem | `{ obligado, montoDesde?, evento?, observaciones }` |
91
+ | `consultarObligadoRecepcion(cuit)` | idem | `{ obligado, desde?, ... }` (campo `respuesta` del WS) |
92
+ | `consultarCtasCtes({ rol, cuitContraparte?, fecha?, estadoCtaCte?, nroPagina?, opcionTransferencia? })` | idem | `{ ctasCtes: InfoCtaCte[], nroPagina?, hayMas?, ... }` |
93
+ | `consultarCtaCte(idCtaCte)` | idem | `{ ctaCte: CuentaCorriente, ... }` |
94
+ | `consultarComprobantes({ rol, cuitContraparte?, codTipoCmp?, estadoCmp?, fecha?, codCtaCte?, estadoCtaCte?, nroPagina? })` | idem | `{ comprobantes: Comprobante[], nroPagina?, hayMas?, ... }` |
95
+ | `consultarHistorialEstadosComprobante(idComprobante)` | idem | `{ idComprobante, estados }` |
96
+ | `consultarHistorialEstadosCtaCte(idCtaCte)` | idem | `{ idCtaCte, estados }` |
97
+ | `obtenerRemitos(idComprobante)` | idem | `IdComprobante[]` |
98
+ | `consultarCuentasEnAgtDptoCltv()` | idem | `{ cuentas, ... }` |
99
+ | `consultarFacturasAgtDptoCltv({ idCtaCte?, fecha? })` | idem | `{ facturas, ... }` |
100
+ | `consultarTiposRetenciones()` | idem | `{ codigoJurisdiccion, descripcionJurisdiccion, porcentajeRetencion }[]` |
101
+ | `consultarTiposFormasCancelacion()` | idem | `{ codigo, descripcion }[]` |
102
+ | `consultarTiposMotivosRechazo()` | idem | `{ codigo, descripcion }[]` |
103
+ | `consultarTiposAjustesOperacion()` | idem | `{ codigo, descripcion }[]` |
104
104
 
105
105
  ### Operaciones que cambian estado (emisiones: nunca se reintentan)
106
106
 
107
- | Método | Operación | Devuelve |
108
- | --- | --- | --- |
109
- | `aceptarFECred({ idCtaCte, saldoAceptado, codMoneda, cotizacionMonedaUlt, ... })` | idem | `{ resultado: 'A' \| 'O', idCtaCte, evento?, observaciones }` |
110
- | `rechazarFECred({ idCtaCte, motivos })` | idem | idem |
111
- | `informarCancelacionTotalFECred({ idCtaCte, formasCancelacion, importeCancelacion })` | idem | idem |
112
- | `modificarOpcionTransferencia({ idCtaCte, opcionTransferencia })` | idem | idem |
113
- | `informarFacturaAgtDptoCltv({ idCtaCte, ctaAgente })` | idem | idem |
114
- | `rechazarNotaDC({ idComprobante, motivos })` | idem | `{ resultado, idComprobante, ... }` |
107
+ | Método | Operación | Devuelve |
108
+ | ------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------- |
109
+ | `aceptarFECred({ idCtaCte, saldoAceptado, codMoneda, cotizacionMonedaUlt, ... })` | idem | `{ resultado: 'A' \| 'O', idCtaCte, evento?, observaciones }` |
110
+ | `rechazarFECred({ idCtaCte, motivos })` | idem | idem |
111
+ | `informarCancelacionTotalFECred({ idCtaCte, formasCancelacion, importeCancelacion })` | idem | idem |
112
+ | `modificarOpcionTransferencia({ idCtaCte, opcionTransferencia })` | idem | idem |
113
+ | `informarFacturaAgtDptoCltv({ idCtaCte, ctaAgente })` | idem | idem |
114
+ | `rechazarNotaDC({ idComprobante, motivos })` | idem | `{ resultado, idComprobante, ... }` |
115
115
 
116
116
  `aceptarFECred` acepta además los opcionales del XSD: `confirmarNotasDC` (`{ acepta, idNota }[]`), `formasCancelacion`, `retenciones` (`{ codTipo, importe, porcentaje, descMotivo? }[]`), `ajustesOperacion` (`{ codigo, importe }[]`), `tipoCancelacion` (`'PAR' | 'TOT'`), `importeCancelado`, `importeTotalRetPesos`, `importeEmbargoPesos`, `informaCBU` y `cbuComprador`.
117
117
 
@@ -138,12 +138,12 @@ Los códigos de formas de cancelación, motivos de rechazo, ajustes de operació
138
138
 
139
139
  ## Errores
140
140
 
141
- | Clase | Cuándo |
142
- | --- | --- |
143
- | `ArcaValidationError` | Datos inválidos (CUIT con dígito verificador incorrecto, fechas inexistentes, importes NaN/negativos, textos fuera de 3..250, CBU inválido, etc.). No se llega a pedir el ticket ni a llamar a ARCA. `field` indica el parámetro. |
144
- | `ArcaServiceError` | ARCA devolvió `arrayErrores` o `arrayErroresFormato`, o una operación terminó con `resultado = 'R'`. `errors: { code, msg, rawCode? }[]` (`rawCode` para los códigos alfanuméricos de `arrayErroresFormato`). |
145
- | `ArcaSoapError` | HTTP, timeout, SOAP Fault (ej: `wscommon_005`/`wscommon_007` de auth) o respuesta sin un campo obligatorio del XSD. `uncertain` indica si ARCA pudo haber procesado el request. |
146
- | `ArcaAuthError` / `ArcaTicketVigenteError` | Falla de WSAA / ya hay un TA vigente que no está en el `ticketStorage`. |
141
+ | Clase | Cuándo |
142
+ | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
143
+ | `ArcaValidationError` | Datos inválidos (CUIT con dígito verificador incorrecto, fechas inexistentes, importes NaN/negativos, textos fuera de 3..250, CBU inválido, etc.). No se llega a pedir el ticket ni a llamar a ARCA. `field` indica el parámetro. |
144
+ | `ArcaServiceError` | ARCA devolvió `arrayErrores` o `arrayErroresFormato`, o una operación terminó con `resultado = 'R'`. `errors: { code, msg, rawCode? }[]` (`rawCode` para los códigos alfanuméricos de `arrayErroresFormato`). |
145
+ | `ArcaSoapError` | HTTP, timeout, SOAP Fault (ej: `wscommon_005`/`wscommon_007` de auth) o respuesta sin un campo obligatorio del XSD. `uncertain` indica si ARCA pudo haber procesado el request. |
146
+ | `ArcaAuthError` / `ArcaTicketVigenteError` | Falla de WSAA / ya hay un TA vigente que no está en el `ticketStorage`. |
147
147
 
148
148
  Las observaciones (`arrayObservaciones`) y el `evento` no son errores: vienen en el resultado.
149
149
 
@@ -171,17 +171,17 @@ try {
171
171
  ```typescript
172
172
  const ticket = await fecred.wsaa.getAccessTicket('wsfecred');
173
173
  const auth = { token: ticket.token, sign: ticket.sign, cuitRepresentada: '20123456786' };
174
- const tipos = await fecred.fecred.consultarTiposMotivosRechazo(auth);
174
+ const tipos = await fecred.client.consultarTiposMotivosRechazo(auth);
175
175
  ```
176
176
 
177
177
  Detalles del protocolo (verificados contra homologación): namespace `http://ar.gob.afip.wsfecred/FECredService/`, wrapper `<operacionRequest>`, header `SOAPAction` = namespace + operación (obligatorio), `dummy` con Body vacío.
178
178
 
179
179
  ## Entornos
180
180
 
181
- | Entorno | WSFECRED |
182
- | --- | --- |
183
- | Homologación | `https://fwshomo.afip.gob.ar/wsfecred/FECredService` |
184
- | Producción | `https://serviciosjava.afip.gob.ar/wsfecred/FECredService` |
181
+ | Entorno | WSFECRED |
182
+ | ------------ | ---------------------------------------------------------- |
183
+ | Homologación | `https://fwshomo.afip.gob.ar/wsfecred/FECredService` |
184
+ | Producción | `https://serviciosjava.afip.gob.ar/wsfecred/FECredService` |
185
185
 
186
186
  Los endpoints de WSAA están en `WSAA_ENDPOINTS` de `@ramiidv/arca-common`.
187
187
 
@@ -1,4 +1,4 @@
1
- import { WsaaClient } from '@ramiidv/arca-common';
1
+ import { ArcaSdkBase } from '@ramiidv/arca-common';
2
2
  import type { CallOptions, ServerStatus } from '@ramiidv/arca-common';
3
3
  import { FecredClient } from './fecred-client.js';
4
4
  import type { AceptarFecredParams, ArcaFecredConfig, CodigoDescripcion, ConsultarComprobantesParams, ConsultarComprobantesResult, ConsultarCtaCteResult, ConsultarCtasCtesParams, ConsultarCtasCtesResult, ConsultarCuentasEnAgtDptoCltvResult, ConsultarFacturasAgtDptoCltvParams, ConsultarFacturasAgtDptoCltvResult, ConsultarMontoObligadoRecepcionParams, HistorialEstadosComprobanteResult, HistorialEstadosCtaCteResult, IdComprobante, IdComprobanteInput, IdCtaCteInput, InformarCancelacionTotalParams, InformarFacturaAgtDptoCltvParams, ModificarOpcionTransferenciaParams, MontoObligadoRecepcionResult, ObligadoRecepcionResult, OperacionFecredResult, RechazarFecredParams, RechazarNotaDCParams, RechazarNotaDCResult, TipoRetencion } from './types.js';
@@ -25,13 +25,11 @@ import type { AceptarFecredParams, ArcaFecredConfig, CodigoDescripcion, Consulta
25
25
  * });
26
26
  * ```
27
27
  */
28
- export declare class ArcaFecred {
29
- /** Cliente WSAA (se puede compartir con otros SDKs). */
30
- readonly wsaa: WsaaClient;
28
+ export declare class ArcaFecred extends ArcaSdkBase<'wsfecred'> {
31
29
  /** Cliente de bajo nivel de FECredService. */
32
- readonly fecred: FecredClient;
33
- /** CUIT representada (11 dígitos). */
34
- private readonly cuit;
30
+ readonly client: FecredClient;
31
+ /** @deprecated Usá `client` (mismo objeto; mismo nombre que en el resto de los SDKs). */
32
+ get fecred(): FecredClient;
35
33
  constructor(config: ArcaFecredConfig);
36
34
  /** Estado de los servidores de WSFECRED (`dummy`, sin autenticación). */
37
35
  status(opts?: CallOptions): Promise<ServerStatus>;
@@ -79,8 +77,6 @@ export declare class ArcaFecred {
79
77
  consultarTiposMotivosRechazo(opts?: CallOptions): Promise<CodigoDescripcion[]>;
80
78
  /** Tipos de ajustes de operación (para `aceptarFECred`). */
81
79
  consultarTiposAjustesOperacion(opts?: CallOptions): Promise<CodigoDescripcion[]>;
82
- /** Descarta el Ticket de Acceso de WSFECRED (memoria y `ticketStorage`). */
83
- clearAuthCache(): Promise<void>;
84
80
  /** Credenciales diferidas: el cliente las pide después de validar los parámetros. */
85
81
  private auth;
86
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arca-fecred.d.ts","sourceRoot":"","sources":["../src/arca-fecred.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arca-fecred.d.ts","sourceRoot":"","sources":["../src/arca-fecred.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,mCAAmC,EACnC,kCAAkC,EAClC,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,4BAA4B,EAC5B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC9B,gCAAgC,EAChC,kCAAkC,EAClC,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAW,SAAQ,WAAW,CAAC,UAAU,CAAC;IACrD,8CAA8C;IAC9C,SAAgB,MAAM,EAAE,YAAY,CAAC;IAErC,yFAAyF;IACzF,IAAI,MAAM,IAAI,YAAY,CAEzB;gBAEW,MAAM,EAAE,gBAAgB;IAcpC,yEAAyE;IACzE,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAQjD,4FAA4F;IAC5F,+BAA+B,CAC7B,MAAM,EAAE,qCAAqC,EAC7C,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,4BAA4B,CAAC;IAIxC,iEAAiE;IACjE,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAQjH,wEAAwE;IACxE,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIxG,uCAAuC;IACvC,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI5F,+DAA+D;IAC/D,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAIpH,8CAA8C;IAC9C,oCAAoC,CAClC,aAAa,EAAE,kBAAkB,EACjC,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,iCAAiC,CAAC;IAI7C,oDAAoD;IACpD,+BAA+B,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAInH,0CAA0C;IAC1C,cAAc,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAQ/F;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI9F,mEAAmE;IACnE,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhG,wDAAwD;IACxD,8BAA8B,CAC5B,MAAM,EAAE,8BAA8B,EACtC,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,qBAAqB,CAAC;IAIjC,6DAA6D;IAC7D,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI/F,2EAA2E;IAC3E,4BAA4B,CAC1B,MAAM,EAAE,kCAAkC,EAC1C,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,qBAAqB,CAAC;IAIjC,6DAA6D;IAC7D,0BAA0B,CACxB,MAAM,EAAE,gCAAgC,EACxC,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,qBAAqB,CAAC;IAQjC,wEAAwE;IACxE,6BAA6B,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mCAAmC,CAAC;IAI/F,2DAA2D;IAC3D,4BAA4B,CAC1B,MAAM,CAAC,EAAE,kCAAkC,EAC3C,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,kCAAkC,CAAC;IAQ9C,wDAAwD;IACxD,yBAAyB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvE,uFAAuF;IACvF,+BAA+B,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIjF,qEAAqE;IACrE,4BAA4B,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI9E,4DAA4D;IAC5D,8BAA8B,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIhF,qFAAqF;IACrF,OAAO,CAAC,IAAI;CAMb"}
@@ -1,7 +1,6 @@
1
- import { WsaaClient } from '@ramiidv/arca-common';
1
+ import { ArcaSdkBase, validateCuit } from '@ramiidv/arca-common';
2
2
  import { ENDPOINTS } from './constants.js';
3
3
  import { FecredClient } from './fecred-client.js';
4
- import { cuitParam } from './validation.js';
5
4
  /**
6
5
  * Cliente de alto nivel de WSFECRED (Factura de Crédito Electrónica MiPyME,
7
6
  * Ley 27.440). Obtiene y cachea el Ticket de Acceso de WSAA automáticamente.
@@ -25,46 +24,20 @@ import { cuitParam } from './validation.js';
25
24
  * });
26
25
  * ```
27
26
  */
28
- export class ArcaFecred {
29
- /** Cliente WSAA (se puede compartir con otros SDKs). */
30
- wsaa;
27
+ export class ArcaFecred extends ArcaSdkBase {
31
28
  /** Cliente de bajo nivel de FECredService. */
32
- fecred;
33
- /** CUIT representada (11 dígitos). */
34
- cuit;
29
+ client;
30
+ /** @deprecated Usá `client` (mismo objeto; mismo nombre que en el resto de los SDKs). */
31
+ get fecred() {
32
+ return this.client;
33
+ }
35
34
  constructor(config) {
36
- const production = config.production ?? false;
37
- this.cuit = cuitParam(config.cuit, 'cuit');
38
- this.wsaa =
39
- config.wsaa ??
40
- new WsaaClient({
41
- cert: config.cert,
42
- key: config.key,
43
- production,
44
- endpoint: config.endpoints?.wsaa,
45
- tokenTTLMinutes: config.tokenTTLMinutes,
46
- timeout: config.timeout,
47
- retries: config.retries,
48
- retryDelayMs: config.retryDelayMs,
49
- onEvent: config.onEvent,
50
- ticketStorage: config.ticketStorage,
51
- clockOffsetMs: config.clockOffsetMs,
52
- autoClockSkew: config.autoClockSkew,
53
- loginErrorCooldownMs: config.loginErrorCooldownMs,
54
- fetch: config.fetch,
55
- legacyTls: config.legacyTls,
56
- });
57
- this.fecred = new FecredClient({
58
- endpoint: config.endpoints?.wsfecred ?? (production ? ENDPOINTS.wsfecred.production : ENDPOINTS.wsfecred.testing),
35
+ // CUIT con dígito verificador (error con `field: 'cuit'`), enviado como 11 dígitos.
36
+ super({ ...config, cuit: validateCuit(config.cuit) }, { wsfecred: ENDPOINTS.wsfecred.serviceId });
37
+ this.client = new FecredClient({
38
+ endpoint: this.endpoint(ENDPOINTS.wsfecred, config.endpoints?.wsfecred),
59
39
  namespace: ENDPOINTS.wsfecred.namespace,
60
- soapOptions: {
61
- timeout: config.timeout,
62
- retries: config.retries,
63
- retryDelayMs: config.retryDelayMs,
64
- fetch: config.fetch,
65
- legacyTls: config.legacyTls,
66
- },
67
- onEvent: config.onEvent,
40
+ transport: this.transport,
68
41
  });
69
42
  }
70
43
  // =========================================================================
@@ -72,45 +45,45 @@ export class ArcaFecred {
72
45
  // =========================================================================
73
46
  /** Estado de los servidores de WSFECRED (`dummy`, sin autenticación). */
74
47
  status(opts) {
75
- return this.fecred.dummy(opts);
48
+ return this.client.dummy(this.callOptions(opts));
76
49
  }
77
50
  // =========================================================================
78
51
  // Obligación de recepción
79
52
  // =========================================================================
80
53
  /** Si una CUIT está obligada a recibir FCE para una fecha de emisión, y desde qué monto. */
81
54
  consultarMontoObligadoRecepcion(params, opts) {
82
- return this.fecred.consultarMontoObligadoRecepcion(this.auth(opts), params, opts);
55
+ return this.client.consultarMontoObligadoRecepcion(this.auth(opts), params, this.callOptions(opts));
83
56
  }
84
57
  /** Si una CUIT está obligada a recibir FCE y desde qué fecha. */
85
58
  consultarObligadoRecepcion(cuitConsultada, opts) {
86
- return this.fecred.consultarObligadoRecepcion(this.auth(opts), cuitConsultada, opts);
59
+ return this.client.consultarObligadoRecepcion(this.auth(opts), cuitConsultada, this.callOptions(opts));
87
60
  }
88
61
  // =========================================================================
89
62
  // Consultas
90
63
  // =========================================================================
91
64
  /** Cuentas corrientes de FCE (paginado: ver `hayMas` / `nroPagina`). */
92
65
  consultarCtasCtes(params, opts) {
93
- return this.fecred.consultarCtasCtes(this.auth(opts), params, opts);
66
+ return this.client.consultarCtasCtes(this.auth(opts), params, this.callOptions(opts));
94
67
  }
95
68
  /** Detalle de una cuenta corriente. */
96
69
  consultarCtaCte(idCtaCte, opts) {
97
- return this.fecred.consultarCtaCte(this.auth(opts), idCtaCte, opts);
70
+ return this.client.consultarCtaCte(this.auth(opts), idCtaCte, this.callOptions(opts));
98
71
  }
99
72
  /** Comprobantes FCE (paginado: ver `hayMas` / `nroPagina`). */
100
73
  consultarComprobantes(params, opts) {
101
- return this.fecred.consultarComprobantes(this.auth(opts), params, opts);
74
+ return this.client.consultarComprobantes(this.auth(opts), params, this.callOptions(opts));
102
75
  }
103
76
  /** Historial de estados de un comprobante. */
104
77
  consultarHistorialEstadosComprobante(idComprobante, opts) {
105
- return this.fecred.consultarHistorialEstadosComprobante(this.auth(opts), idComprobante, opts);
78
+ return this.client.consultarHistorialEstadosComprobante(this.auth(opts), idComprobante, this.callOptions(opts));
106
79
  }
107
80
  /** Historial de estados de una cuenta corriente. */
108
81
  consultarHistorialEstadosCtaCte(idCtaCte, opts) {
109
- return this.fecred.consultarHistorialEstadosCtaCte(this.auth(opts), idCtaCte, opts);
82
+ return this.client.consultarHistorialEstadosCtaCte(this.auth(opts), idCtaCte, this.callOptions(opts));
110
83
  }
111
84
  /** Remitos asociados a un comprobante. */
112
85
  obtenerRemitos(idComprobante, opts) {
113
- return this.fecred.obtenerRemitos(this.auth(opts), idComprobante, opts);
86
+ return this.client.obtenerRemitos(this.auth(opts), idComprobante, this.callOptions(opts));
114
87
  }
115
88
  // =========================================================================
116
89
  // Operaciones (no idempotentes: nunca se reintentan)
@@ -121,69 +94,62 @@ export class ArcaFecred {
121
94
  * `uncertain`), consultá el estado con `consultarCtaCte` antes de reintentar.
122
95
  */
123
96
  aceptarFECred(params, opts) {
124
- return this.fecred.aceptarFECred(this.auth(opts), params, opts);
97
+ return this.client.aceptarFECred(this.auth(opts), params, this.callOptions(opts));
125
98
  }
126
99
  /** Rechaza una FCE (motivos de `consultarTiposMotivosRechazo`). */
127
100
  rechazarFECred(params, opts) {
128
- return this.fecred.rechazarFECred(this.auth(opts), params, opts);
101
+ return this.client.rechazarFECred(this.auth(opts), params, this.callOptions(opts));
129
102
  }
130
103
  /** Informa la cancelación total de una FCE aceptada. */
131
104
  informarCancelacionTotalFECred(params, opts) {
132
- return this.fecred.informarCancelacionTotalFECred(this.auth(opts), params, opts);
105
+ return this.client.informarCancelacionTotalFECred(this.auth(opts), params, this.callOptions(opts));
133
106
  }
134
107
  /** Rechaza una nota de débito/crédito asociada a una FCE. */
135
108
  rechazarNotaDC(params, opts) {
136
- return this.fecred.rechazarNotaDC(this.auth(opts), params, opts);
109
+ return this.client.rechazarNotaDC(this.auth(opts), params, this.callOptions(opts));
137
110
  }
138
111
  /** Cambia la opción de transferencia (SCA/ADC) de una cuenta corriente. */
139
112
  modificarOpcionTransferencia(params, opts) {
140
- return this.fecred.modificarOpcionTransferencia(this.auth(opts), params, opts);
113
+ return this.client.modificarOpcionTransferencia(this.auth(opts), params, this.callOptions(opts));
141
114
  }
142
115
  /** Informa una factura a un Agente de Depósito Colectivo. */
143
116
  informarFacturaAgtDptoCltv(params, opts) {
144
- return this.fecred.informarFacturaAgtDptoCltv(this.auth(opts), params, opts);
117
+ return this.client.informarFacturaAgtDptoCltv(this.auth(opts), params, this.callOptions(opts));
145
118
  }
146
119
  // =========================================================================
147
120
  // Agente de Depósito Colectivo
148
121
  // =========================================================================
149
122
  /** Cuentas de la CUIT representada en Agentes de Depósito Colectivo. */
150
123
  consultarCuentasEnAgtDptoCltv(opts) {
151
- return this.fecred.consultarCuentasEnAgtDptoCltv(this.auth(opts), opts);
124
+ return this.client.consultarCuentasEnAgtDptoCltv(this.auth(opts), this.callOptions(opts));
152
125
  }
153
126
  /** Facturas informadas a Agentes de Depósito Colectivo. */
154
127
  consultarFacturasAgtDptoCltv(params, opts) {
155
- return this.fecred.consultarFacturasAgtDptoCltv(this.auth(opts), params, opts);
128
+ return this.client.consultarFacturasAgtDptoCltv(this.auth(opts), params, this.callOptions(opts));
156
129
  }
157
130
  // =========================================================================
158
131
  // Tablas de parámetros
159
132
  // =========================================================================
160
133
  /** Tipos de retenciones (jurisdicción y porcentaje). */
161
134
  consultarTiposRetenciones(opts) {
162
- return this.fecred.consultarTiposRetenciones(this.auth(opts), opts);
135
+ return this.client.consultarTiposRetenciones(this.auth(opts), this.callOptions(opts));
163
136
  }
164
137
  /** Formas de cancelación (para `aceptarFECred` / `informarCancelacionTotalFECred`). */
165
138
  consultarTiposFormasCancelacion(opts) {
166
- return this.fecred.consultarTiposFormasCancelacion(this.auth(opts), opts);
139
+ return this.client.consultarTiposFormasCancelacion(this.auth(opts), this.callOptions(opts));
167
140
  }
168
141
  /** Motivos de rechazo (para `rechazarFECred` / `rechazarNotaDC`). */
169
142
  consultarTiposMotivosRechazo(opts) {
170
- return this.fecred.consultarTiposMotivosRechazo(this.auth(opts), opts);
143
+ return this.client.consultarTiposMotivosRechazo(this.auth(opts), this.callOptions(opts));
171
144
  }
172
145
  /** Tipos de ajustes de operación (para `aceptarFECred`). */
173
146
  consultarTiposAjustesOperacion(opts) {
174
- return this.fecred.consultarTiposAjustesOperacion(this.auth(opts), opts);
175
- }
176
- // =========================================================================
177
- // Tickets
178
- // =========================================================================
179
- /** Descarta el Ticket de Acceso de WSFECRED (memoria y `ticketStorage`). */
180
- clearAuthCache() {
181
- return this.wsaa.clearTicket(ENDPOINTS.wsfecred.serviceId);
147
+ return this.client.consultarTiposAjustesOperacion(this.auth(opts), this.callOptions(opts));
182
148
  }
183
149
  /** Credenciales diferidas: el cliente las pide después de validar los parámetros. */
184
150
  auth(opts) {
185
151
  return async () => {
186
- const ticket = await this.wsaa.getAccessTicket(ENDPOINTS.wsfecred.serviceId, opts);
152
+ const ticket = await this.ticket('wsfecred', opts);
187
153
  return { token: ticket.token, sign: ticket.sign, cuitRepresentada: this.cuit };
188
154
  };
189
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arca-fecred.js","sourceRoot":"","sources":["../src/arca-fecred.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arca-fecred.js","sourceRoot":"","sources":["../src/arca-fecred.ts"],"names":[],"mappings":"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"}