@ramiidv/arca-padron 0.4.0 → 0.6.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.
Files changed (140) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +45 -53
  3. package/dist/{cjs/arca-padron.d.ts → arca-padron.d.ts} +6 -10
  4. package/dist/arca-padron.d.ts.map +1 -0
  5. package/dist/{esm/arca-padron.js → arca-padron.js} +44 -74
  6. package/dist/arca-padron.js.map +1 -0
  7. package/dist/{cjs/base-client.d.ts → base-client.d.ts} +5 -5
  8. package/dist/base-client.d.ts.map +1 -0
  9. package/dist/{esm/base-client.js → base-client.js} +15 -25
  10. package/dist/base-client.js.map +1 -0
  11. package/dist/condicion-iva.d.ts.map +1 -0
  12. package/dist/{esm/condicion-iva.js → condicion-iva.js} +10 -3
  13. package/dist/condicion-iva.js.map +1 -0
  14. package/dist/{esm/constants.d.ts → constants.d.ts} +22 -34
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/{esm/constants.js → constants.js} +1 -10
  17. package/dist/constants.js.map +1 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/{esm/errors.js → errors.js} +4 -1
  20. package/dist/errors.js.map +1 -0
  21. package/dist/{cjs/index.d.ts → index.d.ts} +2 -9
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/{esm/index.js → index.js} +1 -8
  24. package/dist/index.js.map +1 -0
  25. package/dist/mapping.d.ts +22 -0
  26. package/dist/mapping.d.ts.map +1 -0
  27. package/dist/mapping.js +52 -0
  28. package/dist/mapping.js.map +1 -0
  29. package/dist/{esm/padron-a10.d.ts → padron-a10.d.ts} +6 -3
  30. package/dist/padron-a10.d.ts.map +1 -0
  31. package/dist/{esm/padron-a10.js → padron-a10.js} +22 -14
  32. package/dist/padron-a10.js.map +1 -0
  33. package/dist/{esm/padron-a100.d.ts → padron-a100.d.ts} +6 -0
  34. package/dist/padron-a100.d.ts.map +1 -0
  35. package/dist/{esm/padron-a100.js → padron-a100.js} +22 -20
  36. package/dist/padron-a100.js.map +1 -0
  37. package/dist/{esm/padron-a13.d.ts → padron-a13.d.ts} +5 -3
  38. package/dist/padron-a13.d.ts.map +1 -0
  39. package/dist/padron-a13.js +95 -0
  40. package/dist/padron-a13.js.map +1 -0
  41. package/dist/{esm/padron-a4.d.ts → padron-a4.d.ts} +3 -3
  42. package/dist/padron-a4.d.ts.map +1 -0
  43. package/dist/padron-a4.js +128 -0
  44. package/dist/padron-a4.js.map +1 -0
  45. package/dist/{esm/padron-a5.d.ts → padron-a5.d.ts} +5 -3
  46. package/dist/padron-a5.d.ts.map +1 -0
  47. package/dist/padron-a5.js +214 -0
  48. package/dist/padron-a5.js.map +1 -0
  49. package/dist/{cjs/types.d.ts → types.d.ts} +8 -18
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js.map +1 -0
  52. package/llms.txt +3 -4
  53. package/package.json +21 -32
  54. package/dist/cjs/arca-padron.d.ts.map +0 -1
  55. package/dist/cjs/arca-padron.js +0 -211
  56. package/dist/cjs/arca-padron.js.map +0 -1
  57. package/dist/cjs/base-client.d.ts.map +0 -1
  58. package/dist/cjs/base-client.js +0 -68
  59. package/dist/cjs/base-client.js.map +0 -1
  60. package/dist/cjs/condicion-iva.d.ts.map +0 -1
  61. package/dist/cjs/condicion-iva.js +0 -166
  62. package/dist/cjs/condicion-iva.js.map +0 -1
  63. package/dist/cjs/constants.d.ts +0 -142
  64. package/dist/cjs/constants.d.ts.map +0 -1
  65. package/dist/cjs/constants.js +0 -155
  66. package/dist/cjs/constants.js.map +0 -1
  67. package/dist/cjs/errors.d.ts.map +0 -1
  68. package/dist/cjs/errors.js +0 -62
  69. package/dist/cjs/errors.js.map +0 -1
  70. package/dist/cjs/index.d.ts.map +0 -1
  71. package/dist/cjs/index.js +0 -66
  72. package/dist/cjs/index.js.map +0 -1
  73. package/dist/cjs/mapping.d.ts +0 -52
  74. package/dist/cjs/mapping.d.ts.map +0 -1
  75. package/dist/cjs/mapping.js +0 -135
  76. package/dist/cjs/mapping.js.map +0 -1
  77. package/dist/cjs/package.json +0 -1
  78. package/dist/cjs/padron-a10.d.ts +0 -21
  79. package/dist/cjs/padron-a10.d.ts.map +0 -1
  80. package/dist/cjs/padron-a10.js +0 -38
  81. package/dist/cjs/padron-a10.js.map +0 -1
  82. package/dist/cjs/padron-a100.d.ts +0 -20
  83. package/dist/cjs/padron-a100.d.ts.map +0 -1
  84. package/dist/cjs/padron-a100.js +0 -48
  85. package/dist/cjs/padron-a100.js.map +0 -1
  86. package/dist/cjs/padron-a13.d.ts +0 -34
  87. package/dist/cjs/padron-a13.d.ts.map +0 -1
  88. package/dist/cjs/padron-a13.js +0 -100
  89. package/dist/cjs/padron-a13.js.map +0 -1
  90. package/dist/cjs/padron-a4.d.ts +0 -21
  91. package/dist/cjs/padron-a4.d.ts.map +0 -1
  92. package/dist/cjs/padron-a4.js +0 -119
  93. package/dist/cjs/padron-a4.js.map +0 -1
  94. package/dist/cjs/padron-a5.d.ts +0 -37
  95. package/dist/cjs/padron-a5.d.ts.map +0 -1
  96. package/dist/cjs/padron-a5.js +0 -181
  97. package/dist/cjs/padron-a5.js.map +0 -1
  98. package/dist/cjs/types.d.ts.map +0 -1
  99. package/dist/cjs/types.js +0 -3
  100. package/dist/cjs/types.js.map +0 -1
  101. package/dist/esm/arca-padron.d.ts +0 -111
  102. package/dist/esm/arca-padron.d.ts.map +0 -1
  103. package/dist/esm/arca-padron.js.map +0 -1
  104. package/dist/esm/base-client.d.ts +0 -45
  105. package/dist/esm/base-client.d.ts.map +0 -1
  106. package/dist/esm/base-client.js.map +0 -1
  107. package/dist/esm/condicion-iva.d.ts +0 -28
  108. package/dist/esm/condicion-iva.d.ts.map +0 -1
  109. package/dist/esm/condicion-iva.js.map +0 -1
  110. package/dist/esm/constants.d.ts.map +0 -1
  111. package/dist/esm/constants.js.map +0 -1
  112. package/dist/esm/errors.d.ts +0 -50
  113. package/dist/esm/errors.d.ts.map +0 -1
  114. package/dist/esm/errors.js.map +0 -1
  115. package/dist/esm/index.d.ts +0 -24
  116. package/dist/esm/index.d.ts.map +0 -1
  117. package/dist/esm/index.js.map +0 -1
  118. package/dist/esm/mapping.d.ts +0 -52
  119. package/dist/esm/mapping.d.ts.map +0 -1
  120. package/dist/esm/mapping.js +0 -118
  121. package/dist/esm/mapping.js.map +0 -1
  122. package/dist/esm/padron-a10.d.ts.map +0 -1
  123. package/dist/esm/padron-a10.js.map +0 -1
  124. package/dist/esm/padron-a100.d.ts.map +0 -1
  125. package/dist/esm/padron-a100.js.map +0 -1
  126. package/dist/esm/padron-a13.d.ts.map +0 -1
  127. package/dist/esm/padron-a13.js +0 -94
  128. package/dist/esm/padron-a13.js.map +0 -1
  129. package/dist/esm/padron-a4.d.ts.map +0 -1
  130. package/dist/esm/padron-a4.js +0 -114
  131. package/dist/esm/padron-a4.js.map +0 -1
  132. package/dist/esm/padron-a5.d.ts.map +0 -1
  133. package/dist/esm/padron-a5.js +0 -176
  134. package/dist/esm/padron-a5.js.map +0 -1
  135. package/dist/esm/types.d.ts +0 -337
  136. package/dist/esm/types.d.ts.map +0 -1
  137. package/dist/esm/types.js.map +0 -1
  138. /package/dist/{cjs/condicion-iva.d.ts → condicion-iva.d.ts} +0 -0
  139. /package/dist/{cjs/errors.d.ts → errors.d.ts} +0 -0
  140. /package/dist/{esm/types.js → types.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d535462: Cambio incompatible: `status()` devuelve, para cada servicio, el `ServiceStatus` de arca-common (`{ ok: true, status }` o `{ ok: false, error }`) en lugar de un `PromiseSettledResult`, igual que agro y facturacion.
8
+
9
+ ```ts
10
+ const s = await padron.status();
11
+ if (s.a4.ok) console.log(s.a4.status.appserver);
12
+ else console.error(s.a4.error);
13
+ ```
14
+
15
+ También se quita lo deprecado: `TipoDocumento` (usar `DocTipo`), `ImpuestoId.IVA_NO_INSCRIPTO`, el re-export de `checkServiceErrors` (está en `@ramiidv/arca-common`) y el tipo `ArcaPadronEvent` (usar `ArcaEvent`).
16
+
17
+ `WsAuth` (credenciales de los clientes de bajo nivel) pasa a camelCase: `{ token, sign, cuitRepresentada }`.
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [87f58c1]
22
+ - @ramiidv/arca-common@0.6.0
23
+
24
+ ## 0.5.0
25
+
26
+ ### Minor Changes
27
+
28
+ - bed68e8: Paquetes solo ESM y Node >= 20.19. `arca-common`, `arca-facturacion` y
29
+ `arca-padron` dejan de publicar un build CommonJS: desde CommonJS se cargan con
30
+ `require()` (require(esm), Node >= 20.19 / 22.12). Todos los paquetes pasan a
31
+ requerir Node >= 20.19.0 (Node 18 y 20 sin soporte). El código vive ahora en el
32
+ monorepo `arca-sdks`.
33
+ - f8bd053: Las clases principales extienden `ArcaSdkBase` de arca-common, así que todos
34
+ los SDKs tienen la misma base: `wsaa`, `cuit`, `production`, `on()`/`off()`,
35
+ `clearAuthCache()`, `config.wsaa` (WsaaClient compartido) y `config.signal`
36
+ (signal global). arca-mtxca acepta `endpoints: { mtxca, wsaa }` (`endpoint` y
37
+ `wsaaEndpoint` quedan deprecados). Los `dummy`/`status` validan la respuesta con
38
+ `parseServerStatus`: si falta un campo lanzan `ArcaSoapError`.
39
+ - c9f1444: Requests y respuestas se validan, serializan y decodifican con el DSL de
40
+ `@ramiidv/arca-common/schema`, transcripto del XSD oficial de cada servicio.
41
+
42
+ - Corrección: las respuestas se parsean sin conversión numérica, así que los
43
+ `xs:string` con contenido numérico ya no pierden ceros a la izquierda ni
44
+ decimales (ej: `"0012"`, `"1.50"`, `DocNro`, `codigoSeguridad`).
45
+ - Los campos desconocidos en el input se rechazan con `ArcaValidationError`
46
+ (antes se ignoraban).
47
+ - Todos los errores de validación se informan juntos (`details`), con mensajes
48
+ del tipo `campo: motivo`. Cambió el texto de los mensajes.
49
+ - arca-fecred deja de recortar espacios de los textos y envía `codCtaCte` tal
50
+ cual; porcentaje y cotización se envían con decimales fijos.
51
+
52
+ ### Patch Changes
53
+
54
+ - 20ecf7d: DSL de schemas, segunda versión:
55
+
56
+ - Corrección: `dec()` redondea sobre el valor decimal escrito (`8.575` →
57
+ `8.58`; antes daba `8.57` por la representación binaria). Afecta los importes
58
+ que los SDKs envían redondeados.
59
+ - `must()` rechaza también el valor vacío; los elementos `xsi:nil` cuentan
60
+ como ausentes (en una lista, como lista vacía); `must()` en listas exige el
61
+ elemento; un objeto opcional vacío se omite y uno obligatorio valida sus hijos.
62
+ - Al decodificar se validan enteros (`int()`) y valores permitidos
63
+ (`str({ values })`).
64
+ - Nuevos: `siNo()` (S/N ↔ boolean), `double()`, `xml(nombre, campo)` (nombre
65
+ distinto en el XML), `custom(encode, decode)`, `roundHalfUp()` y
66
+ `decodeResponse(..., { emptyLists: 'omit' })`.
67
+ - Updated dependencies [8c02c30]
68
+ - Updated dependencies [f8bd053]
69
+ - Updated dependencies [242fb5f]
70
+ - Updated dependencies [fd438bc]
71
+ - Updated dependencies [bed68e8]
72
+ - Updated dependencies [20ecf7d]
73
+ - Updated dependencies [b86db00]
74
+ - @ramiidv/arca-common@0.5.0
75
+
3
76
  ## 0.4.0 (2026-11-01)
4
77
 
5
78
  ### Breaking changes
package/README.md CHANGED
@@ -64,24 +64,24 @@ console.log(provincias.length, 'provincias');
64
64
  ```typescript
65
65
  interface ArcaPadronConfig extends ArcaBaseConfig {
66
66
  // De ArcaBaseConfig:
67
- cert: string; // Certificado X.509 en formato PEM
68
- key: string; // Clave privada en formato PEM
69
- cuit: string | number; // CUIT representada (se valida el digito verificador)
70
- production?: boolean; // default: false (homologacion)
71
- timeout?: number; // ms por request (default: 30000)
72
- retries?: number; // reintentos ante errores transitorios (default: 1)
73
- retryDelayMs?: number; // backoff exponencial (default: 1000)
74
- tokenTTLMinutes?: number; // vigencia pedida a WSAA (default: 720)
67
+ cert: string; // Certificado X.509 en formato PEM
68
+ key: string; // Clave privada en formato PEM
69
+ cuit: string | number; // CUIT representada (se valida el digito verificador)
70
+ production?: boolean; // default: false (homologacion)
71
+ timeout?: number; // ms por request (default: 30000)
72
+ retries?: number; // reintentos ante errores transitorios (default: 1)
73
+ retryDelayMs?: number; // backoff exponencial (default: 1000)
74
+ tokenTTLMinutes?: number; // vigencia pedida a WSAA (default: 720)
75
75
  onEvent?: (event: ArcaEvent) => void;
76
- ticketStorage?: TicketStorage; // persistencia de tickets WSAA (recomendado)
77
- clockOffsetMs?: number; // relojARCA - relojLocal en ms (default: 0)
78
- autoClockSkew?: boolean; // default: true
79
- loginErrorCooldownMs?: number; // default: 60000
80
- fetch?: typeof fetch; // fetch propio (proxy, mTLS, tests)
76
+ ticketStorage?: TicketStorage; // persistencia de tickets WSAA (recomendado)
77
+ clockOffsetMs?: number; // relojARCA - relojLocal en ms (default: 0)
78
+ autoClockSkew?: boolean; // default: true
79
+ loginErrorCooldownMs?: number; // default: 60000
80
+ fetch?: typeof fetch; // fetch propio (proxy, mTLS, tests)
81
81
  legacyTls?: 'auto' | 'never' | 'always';
82
82
  // Propias de Padron:
83
- signal?: AbortSignal; // cancela todas las llamadas de la instancia
84
- wsaa?: WsaaClient; // WsaaClient compartido (ej: arca.wsaa de arca-facturacion)
83
+ signal?: AbortSignal; // cancela todas las llamadas de la instancia
84
+ wsaa?: WsaaClient; // WsaaClient compartido (ej: arca.wsaa de arca-facturacion)
85
85
  endpoints?: { wsaa?: string; a5?: string; a4?: string; a10?: string; a13?: string; a100?: string };
86
86
  }
87
87
  ```
@@ -89,7 +89,7 @@ interface ArcaPadronConfig extends ArcaBaseConfig {
89
89
  > **Persisti el Ticket de Acceso.** WSAA rechaza el login si ya hay un TA vigente para el
90
90
  > certificado y servicio. Sin `ticketStorage`, un reinicio del proceso te deja sin poder consultar
91
91
  > hasta que venza (hasta 12 horas, `ArcaTicketVigenteError`). Ver `TicketStorage` en
92
- > [`@ramiidv/arca-common`](https://github.com/ramiidv/arca-common).
92
+ > [`@ramiidv/arca-common`](https://github.com/ramiidv/arca-sdks/tree/main/packages/common).
93
93
 
94
94
  Si usas tambien `@ramiidv/arca-facturacion` con el mismo certificado, comparti el cliente WSAA:
95
95
 
@@ -119,8 +119,8 @@ impuestos, actividad, `componenteDeSociedad`) y, si ARCA no puede emitir la cons
119
119
 
120
120
  ```typescript
121
121
  const constancia = await padron.getConstanciaInscripcion('30712345671');
122
- constancia.domicilioFiscal; // { direccion, localidad, codPostal, idProvincia, ... }
123
- constancia.impuestos; // impuestos de ambos regimenes
122
+ constancia.domicilioFiscal; // { direccion, localidad, codPostal, idProvincia, ... }
123
+ constancia.impuestos; // impuestos de ambos regimenes
124
124
  constancia.monotributo?.categoria; // { idCategoria, descripcionCategoria, ... }
125
125
  ```
126
126
 
@@ -140,15 +140,15 @@ for (const c of constancias) {
140
140
 
141
141
  Funcion pura (no consulta ARCA). Acepta una constancia (`PersonaA5`) o una persona de A4:
142
142
 
143
- | Padron | `condicionIva` |
144
- | --- | --- |
145
- | Monotributo activo (impuesto 20 activo; si no figura el 20, la categoria) | `MONOTRIBUTISTA` (6) |
146
- | Monotributo social (categorias 61, 99, 100 y proyectos productivos 101-104) | `MONOTRIBUTO_SOCIAL` (13) |
147
- | Trabajador independiente promovido (por la descripcion de la categoria) | `MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO` (16) |
148
- | IVA (impuesto 30) `ACTIVO` / `ACTIVO EN TRAMITE` / `AC` | `RESPONSABLE_INSCRIPTO` (1) |
149
- | IVA (impuesto 30) `EXENTO` / `EXENTO EN TRAMITE` / `EX`, o impuesto 32 | `EXENTO` (4) |
150
- | Impuesto 34 (IVA no alcanzado) | `IVA_NO_ALCANZADO` (15) |
151
- | Ninguno de los anteriores, constancia no emitida o con errores | `null` (con el motivo) |
143
+ | Padron | `condicionIva` |
144
+ | --------------------------------------------------------------------------- | ------------------------------------------ |
145
+ | Monotributo activo (impuesto 20 activo; si no figura el 20, la categoria) | `MONOTRIBUTISTA` (6) |
146
+ | Monotributo social (categorias 61, 99, 100 y proyectos productivos 101-104) | `MONOTRIBUTO_SOCIAL` (13) |
147
+ | Trabajador independiente promovido (por la descripcion de la categoria) | `MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO` (16) |
148
+ | IVA (impuesto 30) `ACTIVO` / `ACTIVO EN TRAMITE` / `AC` | `RESPONSABLE_INSCRIPTO` (1) |
149
+ | IVA (impuesto 30) `EXENTO` / `EXENTO EN TRAMITE` / `EX`, o impuesto 32 | `EXENTO` (4) |
150
+ | Impuesto 34 (IVA no alcanzado) | `IVA_NO_ALCANZADO` (15) |
151
+ | Ninguno de los anteriores, constancia no emitida o con errores | `null` (con el motivo) |
152
152
 
153
153
  Los impuestos en `BAJA PROVISORIA`, `BAJA DEFINITIVA` o `NO APORTANTE` no cuentan (un impuesto 20
154
154
  en baja no se considera monotributo aunque haya categoria). Si el padron no alcanza, devuelve `null`
@@ -206,13 +206,14 @@ La coleccion de categorias de monotributo no se incluye porque su nombre aparece
206
206
  #### `status(): Promise<PadronStatus>`
207
207
 
208
208
  Verifica el estado de los servicios (`dummy`, no requiere autenticacion). Consulta los cinco en
209
- paralelo con `Promise.allSettled`: cada uno es un `PromiseSettledResult<ServerStatus>`, asi que un
210
- servicio caido no oculta el estado de los demas.
209
+ paralelo: cada uno es un `ServiceStatus` de arca-common (`{ ok: true, status }` o
210
+ `{ ok: false, error }`), asi que un servicio caido no oculta el estado de los demas.
211
211
 
212
212
  ```typescript
213
213
  const estado = await padron.status();
214
- if (estado.a4.status === 'fulfilled') console.log(estado.a4.value.appserver); // "OK"
215
- else console.error('A4 caido:', estado.a4.reason);
214
+ if (estado.a4.ok)
215
+ console.log(estado.a4.status.appserver); // "OK"
216
+ else console.error('A4 caido:', estado.a4.error);
216
217
  ```
217
218
 
218
219
  ### Acceso a clientes de bajo nivel
@@ -220,7 +221,9 @@ else console.error('A4 caido:', estado.a4.reason);
220
221
  Para casos avanzados, se pueden usar los clientes individuales directamente:
221
222
 
222
223
  ```typescript
223
- const padron = new ArcaPadron({ /* ... */ });
224
+ const padron = new ArcaPadron({
225
+ /* ... */
226
+ });
224
227
 
225
228
  // Obtener ticket de acceso manualmente
226
229
  const ticket = await padron.wsaa.getAccessTicket('ws_sr_padron_a4');
@@ -345,11 +348,11 @@ cargada. ARCA informa los errores de negocio como SOAP Fault; el SDK reconoce lo
345
348
  manuales y los convierte en `ArcaPadronServiceError` con un `reason` tipado (el `ArcaSoapError`
346
349
  original queda en `cause`). No se reintentan.
347
350
 
348
- | `reason` | Mensaje de ARCA |
349
- | --- | --- |
350
- | `inexistente` | "La Clave (CUIT/CUIL) consultada es inexistente", "No existe persona con ese Id" |
351
- | `inactiva` | "La clave (CUIT/CUIL) consultada se encuentra INACTIVA" (A13: usar `getPersonaA13V2`) |
352
- | `id_invalido` | "El Id de la persona no es valido" |
351
+ | `reason` | Mensaje de ARCA |
352
+ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
353
+ | `inexistente` | "La Clave (CUIT/CUIL) consultada es inexistente", "No existe persona con ese Id" |
354
+ | `inactiva` | "La clave (CUIT/CUIL) consultada se encuentra INACTIVA" (A13: usar `getPersonaA13V2`) |
355
+ | `id_invalido` | "El Id de la persona no es valido" |
353
356
  | `no_autorizado` | "No autorizado, par token/sign invalido.", "Falta token y/o sign.", "Debe enviar la CUIT representada", "Este token no le permite actuar en representacion de la CUIT ..." |
354
357
 
355
358
  Un SOAP Fault con otro texto queda como `ArcaSoapError` (con `faultString`). En la constancia de
@@ -358,12 +361,7 @@ incompleto, etc.) no son excepciones: vienen en `errorConstancia`, `errorRegimen
358
361
  `errorMonotributo`.
359
362
 
360
363
  ```typescript
361
- import {
362
- ArcaAuthError,
363
- ArcaPadronServiceError,
364
- ArcaSoapError,
365
- ArcaValidationError,
366
- } from '@ramiidv/arca-padron';
364
+ import { ArcaAuthError, ArcaPadronServiceError, ArcaSoapError, ArcaValidationError } from '@ramiidv/arca-padron';
367
365
 
368
366
  try {
369
367
  await padron.getPersona('20111111112');
@@ -417,25 +415,19 @@ const padron = new ArcaPadron({
417
415
  ## Enums utiles
418
416
 
419
417
  ```typescript
420
- import {
421
- Provincia,
422
- TipoDomicilio,
423
- TipoPersona,
424
- ImpuestoId,
425
- CollectionName,
426
- } from '@ramiidv/arca-padron';
418
+ import { Provincia, TipoDomicilio, TipoPersona, ImpuestoId, CollectionName } from '@ramiidv/arca-padron';
427
419
 
428
420
  // Verificar si el contribuyente esta inscripto en IVA (mejor: condicionIvaDesdePadron)
429
421
  const tieneIva = contribuyente.impuesto?.some(
430
- (imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado?.startsWith('ACTIVO')
422
+ (imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado?.startsWith('ACTIVO'),
431
423
  );
432
424
 
433
425
  // ImpuestoId.MONOTRIBUTO = 20, IVA_RESPONSABLE_INSCRIPTO = 30, BIENES_PERSONALES = 180,
434
426
  // EMPLEADOR = 301, AUTONOMOS = 308 (manuales de ARCA). IVA_EXENTO (32) e IVA_NO_ALCANZADO (34)
435
427
  // no figuran en los manuales del padron.
436
428
  //
437
- // `TipoDocumento` esta deprecado: es `DocTipo` (codigos numericos de WSFEv1), no el
438
- // `tipoDocumento` string del padron ("DNI", "LC"...).
429
+ // `DocTipo` son los codigos numericos de WSFEv1, no el `tipoDocumento` string del padron
430
+ // ("DNI", "LC"...).
439
431
  ```
440
432
 
441
433
  ## Requisitos
@@ -1,11 +1,11 @@
1
- import { WsaaClient } from '@ramiidv/arca-common';
1
+ import { ArcaSdkBase } from '@ramiidv/arca-common';
2
2
  import type { CallOptions } from '@ramiidv/arca-common';
3
3
  import { PadronA4Client } from './padron-a4.js';
4
4
  import { PadronA5Client } from './padron-a5.js';
5
5
  import { PadronA10Client } from './padron-a10.js';
6
6
  import { PadronA13Client } from './padron-a13.js';
7
7
  import { PadronA100Client } from './padron-a100.js';
8
- import type { ArcaPadronConfig, PadronStatus, ParameterRecord, PersonaA4, PersonaA5, PersonaA10, PersonaA13 } from './types.js';
8
+ import type { ArcaPadronConfig, PadronServicio, PadronStatus, ParameterRecord, PersonaA4, PersonaA5, PersonaA10, PersonaA13 } from './types.js';
9
9
  /**
10
10
  * Main orchestrator class for ARCA Padrón web services.
11
11
  *
@@ -30,9 +30,7 @@ import type { ArcaPadronConfig, PadronStatus, ParameterRecord, PersonaA4, Person
30
30
  * const { condicionIva, motivo } = condicionIvaDesdePadron(persona);
31
31
  * ```
32
32
  */
33
- export declare class ArcaPadron {
34
- /** Low-level WSAA client for direct access (se puede compartir con arca-facturacion) */
35
- readonly wsaa: WsaaClient;
33
+ export declare class ArcaPadron extends ArcaSdkBase<PadronServicio> {
36
34
  /** Low-level Constancia de Inscripción (ex Padrón A5) client */
37
35
  readonly a5: PadronA5Client;
38
36
  /** Low-level Padrón A4 client for direct access */
@@ -43,8 +41,7 @@ export declare class ArcaPadron {
43
41
  readonly a13: PadronA13Client;
44
42
  /** Low-level Padrón A100 client for direct access */
45
43
  readonly a100: PadronA100Client;
46
- private readonly cuit;
47
- private readonly signal?;
44
+ /** @throws ArcaValidationError si la CUIT representada es inválida. */
48
45
  constructor(config: ArcaPadronConfig);
49
46
  /**
50
47
  * Constancia de inscripción (ws_sr_constancia_inscripcion, ex Padrón A5,
@@ -100,12 +97,11 @@ export declare class ArcaPadron {
100
97
  * @example
101
98
  * ```ts
102
99
  * const s = await padron.status();
103
- * if (s.a4.status === 'fulfilled') console.log(s.a4.value.appserver);
104
- * else console.error(s.a4.reason);
100
+ * if (s.a4.ok) console.log(s.a4.status.appserver);
101
+ * else console.error(s.a4.error);
105
102
  * ```
106
103
  */
107
104
  status(call?: CallOptions): Promise<PadronStatus>;
108
- private opts;
109
105
  private getAuth;
110
106
  }
111
107
  //# sourceMappingURL=arca-padron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arca-padron.d.ts","sourceRoot":"","sources":["../src/arca-padron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAW,SAAQ,WAAW,CAAC,cAAc,CAAC;IACzD,gEAAgE;IAChE,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,mDAAmD;IACnD,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,oDAAoD;IACpD,SAAgB,GAAG,EAAE,eAAe,CAAC;IACrC,oDAAoD;IACpD,SAAgB,GAAG,EAAE,eAAe,CAAC;IACrC,qDAAqD;IACrD,SAAgB,IAAI,EAAE,gBAAgB,CAAC;IAEvC,uEAAuE;IACvE,YAAY,MAAM,EAAE,gBAAgB,EAsBnC;IAED;;;;;;;OAOG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAI5F;IAED;;;;OAIG;IACG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAIvG;IAED;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAI9E;IAED;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAIpF;IAED;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAIlF;IAED;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAIpF;IAED;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAInG;IAED;;;OAGG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAItF;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAShD;YAMa,OAAO;CAQtB"}
@@ -1,4 +1,4 @@
1
- import { WsaaClient, anySignal, validateCuit } from '@ramiidv/arca-common';
1
+ import { ArcaSdkBase, statusOf } from '@ramiidv/arca-common';
2
2
  import { ENDPOINTS } from './constants.js';
3
3
  import { PadronA4Client } from './padron-a4.js';
4
4
  import { PadronA5Client } from './padron-a5.js';
@@ -29,9 +29,7 @@ import { PadronA100Client } from './padron-a100.js';
29
29
  * const { condicionIva, motivo } = condicionIvaDesdePadron(persona);
30
30
  * ```
31
31
  */
32
- export class ArcaPadron {
33
- /** Low-level WSAA client for direct access (se puede compartir con arca-facturacion) */
34
- wsaa;
32
+ export class ArcaPadron extends ArcaSdkBase {
35
33
  /** Low-level Constancia de Inscripción (ex Padrón A5) client */
36
34
  a5;
37
35
  /** Low-level Padrón A4 client for direct access */
@@ -42,42 +40,18 @@ export class ArcaPadron {
42
40
  a13;
43
41
  /** Low-level Padrón A100 client for direct access */
44
42
  a100;
45
- cuit;
46
- signal;
43
+ /** @throws ArcaValidationError si la CUIT representada es inválida. */
47
44
  constructor(config) {
48
- const isProduction = config.production ?? false;
49
- const env = isProduction ? 'production' : 'testing';
50
- this.cuit = validateCuit(config.cuit);
51
- this.signal = config.signal;
52
- const onEvent = config.onEvent;
53
- const soapOptions = {
54
- timeout: config.timeout,
55
- retries: config.retries,
56
- retryDelayMs: config.retryDelayMs,
57
- fetch: config.fetch,
58
- legacyTls: config.legacyTls,
59
- };
60
- this.wsaa =
61
- config.wsaa ??
62
- new WsaaClient({
63
- cert: config.cert,
64
- key: config.key,
65
- production: isProduction,
66
- endpoint: config.endpoints?.wsaa,
67
- tokenTTLMinutes: config.tokenTTLMinutes,
68
- timeout: config.timeout,
69
- retries: config.retries,
70
- retryDelayMs: config.retryDelayMs,
71
- onEvent,
72
- ticketStorage: config.ticketStorage,
73
- clockOffsetMs: config.clockOffsetMs,
74
- autoClockSkew: config.autoClockSkew,
75
- loginErrorCooldownMs: config.loginErrorCooldownMs,
76
- fetch: config.fetch,
77
- legacyTls: config.legacyTls,
78
- });
45
+ super(config, {
46
+ a5: ENDPOINTS.a5.serviceId,
47
+ a4: ENDPOINTS.a4.serviceId,
48
+ a10: ENDPOINTS.a10.serviceId,
49
+ a13: ENDPOINTS.a13.serviceId,
50
+ a100: ENDPOINTS.a100.serviceId,
51
+ });
52
+ const { onEvent, ...soapOptions } = this.transport;
79
53
  const clientConfig = (svc) => ({
80
- endpoint: config.endpoints?.[svc] ?? ENDPOINTS[svc][env],
54
+ endpoint: this.endpoint(ENDPOINTS[svc], config.endpoints?.[svc]),
81
55
  namespace: ENDPOINTS[svc].namespace,
82
56
  soapOptions,
83
57
  onEvent,
@@ -97,8 +71,8 @@ export class ArcaPadron {
97
71
  * @throws ArcaPadronServiceError si ARCA informa la CUIT inexistente, inactiva, etc.
98
72
  */
99
73
  async getConstanciaInscripcion(cuit, call) {
100
- const opts = this.opts(call);
101
- const auth = await this.getAuth(ENDPOINTS.a5.serviceId, opts);
74
+ const opts = this.callOptions(call);
75
+ const auth = await this.getAuth('a5', call);
102
76
  return this.a5.getPersona(auth, cuit, opts);
103
77
  }
104
78
  /**
@@ -107,8 +81,8 @@ export class ArcaPadron {
107
81
  * ("No existe persona con ese Id") en lugar de hacer fallar la consulta.
108
82
  */
109
83
  async getConstanciasInscripcion(cuits, call) {
110
- const opts = this.opts(call);
111
- const auth = await this.getAuth(ENDPOINTS.a5.serviceId, opts);
84
+ const opts = this.callOptions(call);
85
+ const auth = await this.getAuth('a5', call);
112
86
  return this.a5.getPersonaList(auth, cuits, opts);
113
87
  }
114
88
  /**
@@ -116,8 +90,8 @@ export class ArcaPadron {
116
90
  * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
117
91
  */
118
92
  async getPersona(cuit, call) {
119
- const opts = this.opts(call);
120
- const auth = await this.getAuth(ENDPOINTS.a4.serviceId, opts);
93
+ const opts = this.callOptions(call);
94
+ const auth = await this.getAuth('a4', call);
121
95
  return this.a4.getPersona(auth, cuit, opts);
122
96
  }
123
97
  /**
@@ -125,8 +99,8 @@ export class ArcaPadron {
125
99
  * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
126
100
  */
127
101
  async getPersonaBasic(cuit, call) {
128
- const opts = this.opts(call);
129
- const auth = await this.getAuth(ENDPOINTS.a10.serviceId, opts);
102
+ const opts = this.callOptions(call);
103
+ const auth = await this.getAuth('a10', call);
130
104
  return this.a10.getPersona(auth, cuit, opts);
131
105
  }
132
106
  /**
@@ -135,8 +109,8 @@ export class ArcaPadron {
135
109
  * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
136
110
  */
137
111
  async getPersonaA13(cuit, call) {
138
- const opts = this.opts(call);
139
- const auth = await this.getAuth(ENDPOINTS.a13.serviceId, opts);
112
+ const opts = this.callOptions(call);
113
+ const auth = await this.getAuth('a13', call);
140
114
  return this.a13.getPersona(auth, cuit, opts);
141
115
  }
142
116
  /**
@@ -144,8 +118,8 @@ export class ArcaPadron {
144
118
  * también si la clave está INACTIVA (manual A13 v1.4).
145
119
  */
146
120
  async getPersonaA13V2(cuit, call) {
147
- const opts = this.opts(call);
148
- const auth = await this.getAuth(ENDPOINTS.a13.serviceId, opts);
121
+ const opts = this.callOptions(call);
122
+ const auth = await this.getAuth('a13', call);
149
123
  return this.a13.getPersonaV2(auth, cuit, opts);
150
124
  }
151
125
  /**
@@ -153,8 +127,8 @@ export class ArcaPadron {
153
127
  * @param documento - Número de documento (DNI); se aceptan puntos y espacios
154
128
  */
155
129
  async getIdPersonaListByDocumento(documento, call) {
156
- const opts = this.opts(call);
157
- const auth = await this.getAuth(ENDPOINTS.a13.serviceId, opts);
130
+ const opts = this.callOptions(call);
131
+ const auth = await this.getAuth('a13', call);
158
132
  return this.a13.getIdPersonaListByDocumento(auth, documento, opts);
159
133
  }
160
134
  /**
@@ -162,8 +136,8 @@ export class ArcaPadron {
162
136
  * @param collection - Nombre de la colección (ej: CollectionName.PROVINCIA)
163
137
  */
164
138
  async getParametros(collection, call) {
165
- const opts = this.opts(call);
166
- const auth = await this.getAuth(ENDPOINTS.a100.serviceId, opts);
139
+ const opts = this.callOptions(call);
140
+ const auth = await this.getAuth('a100', call);
167
141
  return this.a100.getParameterCollectionByName(auth, collection, opts);
168
142
  }
169
143
  /**
@@ -174,33 +148,29 @@ export class ArcaPadron {
174
148
  * @example
175
149
  * ```ts
176
150
  * const s = await padron.status();
177
- * if (s.a4.status === 'fulfilled') console.log(s.a4.value.appserver);
178
- * else console.error(s.a4.reason);
151
+ * if (s.a4.ok) console.log(s.a4.status.appserver);
152
+ * else console.error(s.a4.error);
179
153
  * ```
180
154
  */
181
- async status(call) {
182
- const opts = this.opts(call);
183
- const [a5, a4, a10, a13, a100] = await Promise.allSettled([
184
- this.a5.dummy(opts),
185
- this.a4.dummy(opts),
186
- this.a10.dummy(opts),
187
- this.a13.dummy(opts),
188
- this.a100.dummy(opts),
189
- ]);
190
- return { a5, a4, a10, a13, a100 };
155
+ status(call) {
156
+ const opts = this.callOptions(call);
157
+ return statusOf({
158
+ a5: () => this.a5.dummy(opts),
159
+ a4: () => this.a4.dummy(opts),
160
+ a10: () => this.a10.dummy(opts),
161
+ a13: () => this.a13.dummy(opts),
162
+ a100: () => this.a100.dummy(opts),
163
+ });
191
164
  }
192
165
  // -------------------------------------------------------------------------
193
166
  // Private helpers
194
167
  // -------------------------------------------------------------------------
195
- opts(call) {
196
- return { signal: anySignal(this.signal, call?.signal) };
197
- }
198
- async getAuth(serviceId, opts) {
199
- const ticket = await this.wsaa.getAccessTicket(serviceId, opts);
168
+ async getAuth(service, call) {
169
+ const ticket = await this.ticket(service, call);
200
170
  return {
201
- Token: ticket.token,
202
- Sign: ticket.sign,
203
- CuitRepresentada: this.cuit,
171
+ token: ticket.token,
172
+ sign: ticket.sign,
173
+ cuitRepresentada: this.cuit,
204
174
  };
205
175
  }
206
176
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arca-padron.js","sourceRoot":"","sources":["../src/arca-padron.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { SoapServiceClient } from '@ramiidv/arca-common';
1
2
  import type { ArcaEvent, CallOptions, ServerStatus, SoapCallOptions } from '@ramiidv/arca-common';
2
3
  import type { WsAuth } from './types.js';
3
4
  /** Opciones de transporte que se pasan a cada llamada SOAP. */
@@ -24,14 +25,13 @@ export interface PadronClientConfig {
24
25
  * clave inactiva, token no autorizado...) se lanzan como `ArcaPadronServiceError`.
25
26
  *
26
27
  * Las respuestas se parsean con `parseNumbers: false`: todos los valores llegan
27
- * como string tal cual los envía ARCA, y `mapping.ts` convierte explícitamente
28
- * los campos numéricos del WSDL (`optNumber`/`reqNumber`). Así los `xs:string`
28
+ * como string tal cual los envía ARCA, y los schemas de cada servicio (DSL de
29
+ * `@ramiidv/arca-common/schema`, ver `mapping.ts`) convierten los campos
30
+ * numéricos del WSDL. Así los `xs:string`
29
31
  * con contenido numérico (`datoAdicional`, `codPostal`, `piso`, los campos del
30
32
  * A100...) no pierden ceros ni decimales (`"10.50"`, `"1E3"`).
31
33
  */
32
- export declare abstract class BasePadronClient {
33
- protected readonly endpoint: string;
34
- protected readonly namespace: string;
34
+ export declare abstract class BasePadronClient extends SoapServiceClient {
35
35
  protected readonly soapOptions?: PadronSoapOptions;
36
36
  protected readonly onEvent?: (event: ArcaEvent) => void;
37
37
  constructor(config: PadronClientConfig);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../src/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmC,MAAM,sBAAsB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;AAEtH,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,gBAAiB,SAAQ,iBAAiB;IAC9D,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAExD,YAAY,MAAM,EAAE,kBAAkB,EAQrC;IAED,sEAAsE;IACtE,UAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;IAED,uFAAuF;IACvF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1D;IAED,qCAAqC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAErD;CACF"}
@@ -1,6 +1,5 @@
1
- import { afipSoapCall, validateCuit } from '@ramiidv/arca-common';
1
+ import { SoapServiceClient, parseServerStatus, validateCuit } from '@ramiidv/arca-common';
2
2
  import { toPadronError } from './errors.js';
3
- import { reqString } from './mapping.js';
4
3
  /**
5
4
  * Base de los clientes de Padrón.
6
5
  *
@@ -12,32 +11,28 @@ import { reqString } from './mapping.js';
12
11
  * clave inactiva, token no autorizado...) se lanzan como `ArcaPadronServiceError`.
13
12
  *
14
13
  * Las respuestas se parsean con `parseNumbers: false`: todos los valores llegan
15
- * como string tal cual los envía ARCA, y `mapping.ts` convierte explícitamente
16
- * los campos numéricos del WSDL (`optNumber`/`reqNumber`). Así los `xs:string`
14
+ * como string tal cual los envía ARCA, y los schemas de cada servicio (DSL de
15
+ * `@ramiidv/arca-common/schema`, ver `mapping.ts`) convierten los campos
16
+ * numéricos del WSDL. Así los `xs:string`
17
17
  * con contenido numérico (`datoAdicional`, `codPostal`, `piso`, los campos del
18
18
  * A100...) no pierden ceros ni decimales (`"10.50"`, `"1E3"`).
19
19
  */
20
- export class BasePadronClient {
21
- endpoint;
22
- namespace;
20
+ export class BasePadronClient extends SoapServiceClient {
23
21
  soapOptions;
24
22
  onEvent;
25
23
  constructor(config) {
26
- this.endpoint = config.endpoint;
27
- this.namespace = config.namespace;
24
+ super({
25
+ endpoint: config.endpoint,
26
+ namespace: config.namespace,
27
+ transport: { ...config.soapOptions, onEvent: config.onEvent },
28
+ });
28
29
  this.soapOptions = config.soapOptions;
29
30
  this.onEvent = config.onEvent;
30
31
  }
31
32
  /** Llama a un método del servicio y traduce los Faults de negocio. */
32
33
  async call(method, params, opts) {
33
34
  try {
34
- return await afipSoapCall(this.endpoint, this.namespace, method, params, {
35
- ...this.soapOptions,
36
- parseNumbers: false,
37
- kind: 'consulta',
38
- onEvent: this.onEvent,
39
- signal: opts?.signal,
40
- });
35
+ return await this.soapCall(method, params, { parseNumbers: false, signal: opts?.signal });
41
36
  }
42
37
  catch (err) {
43
38
  throw toPadronError(err, method);
@@ -46,19 +41,14 @@ export class BasePadronClient {
46
41
  /** Parámetros de autenticación en el orden del WSDL: token, sign, cuitRepresentada. */
47
42
  authParams(auth) {
48
43
  return {
49
- token: auth.Token,
50
- sign: auth.Sign,
51
- cuitRepresentada: validateCuit(auth.CuitRepresentada),
44
+ token: auth.token,
45
+ sign: auth.sign,
46
+ cuitRepresentada: validateCuit(auth.cuitRepresentada),
52
47
  };
53
48
  }
54
49
  /** Health check for this service. */
55
50
  async dummy(opts) {
56
- const result = await this.call('dummy', {}, opts);
57
- return {
58
- appserver: reqString(result['appserver'], 'dummy.appserver'),
59
- dbserver: reqString(result['dbserver'], 'dummy.dbserver'),
60
- authserver: reqString(result['authserver'], 'dummy.authserver'),
61
- };
51
+ return parseServerStatus(await this.call('dummy', {}, opts));
62
52
  }
63
53
  }
64
54
  //# sourceMappingURL=base-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../src/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkB5C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,iBAAiB;IAC3C,WAAW,CAAqB;IAChC,OAAO,CAA8B;IAExD,YAAY,MAA0B;QACpC,KAAK,CAAC;YACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;SAC9D,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,sEAAsE;IAC5D,KAAK,CAAC,IAAI,CAClB,MAAc,EACd,MAA+B,EAC/B,IAAkB;QAElB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,uFAAuF;IAC7E,UAAU,CAAC,IAAY;QAC/B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,KAAK,CAAC,IAAkB;QAC5B,OAAO,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condicion-iva.d.ts","sourceRoot":"","sources":["../src/condicion-iva.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuG3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,kBAAkB,CAgF1F"}