WSAA

ARCA Common

@ramiidv/arca-common@0.10.0

Paquete base del ecosistema ARCA. Autenticación WSAA con ticket persistente, cliente SOAP con fallback TLS legacy, validadores de CUIT/CBU, fechas en formato ARCA con validación estricta y jerarquía de errores.

npm install @ramiidv/arca-common@0.10.0
TypeScript
import {
  validateCuit,
  formatCuit,
  isValidCBU,
  formatDate,
  parseArcaDate,
} from "@ramiidv/arca-common";

// CUIT/CUIL: formato y dígito verificador
const cuit = validateCuit("20-12345678-6"); // "20123456786"
formatCuit(cuit);                           // "20-12345678-6"

// CBU (22 dígitos, verifica el dígito de cada uno de sus dos bloques)
isValidCBU("0110599500000041817221"); // true

// Fechas en formato ARCA, validación estricta (hora de Argentina)
formatDate("2026-03-15");  // "20260315"
parseArcaDate("20260331"); // 2026-03-31T15:00:00.000Z (mediodía en Argentina, UTC-3)
formatDate("20230230");    // ArcaValidationError: la fecha no existe

Características

Qué incluye Common

WSAA

Firma CMS/PKCS#7 con un TRA de 10 minutos, cache de tokens, ticketStorage persistente (archivos 0600 en un directorio 0700 propio, sin seguir symlinks), deduplicación y ajuste de reloj acotado. Respeta las esperas del manual: tras un error no reintentable no vuelve a pedir ticket, y tras un TA vigente espera el lapso de retención.

Cliente SOAP

soapCall con timeout, AbortSignal y retry solo en consultas; detecta resultados inciertos. Solo endpoints https, no sigue redirects (token y sign no salen a otro host), tope de tamaño de respuesta y XML sin DOCTYPE.

TLS legacy

Solo para el host de ARCA con DH de 1024 bits (producción de WSFEv1, WSFEX y WSCDC): si fetch falla con ERR_SSL_DH_KEY_TOO_SMALL, reintenta por node:https, valida el certificado y emite un evento. legacyTls: auto, never o always.

Fechas estrictas

formatDate y parseArcaDate solo aceptan YYYYMMDD o YYYY-MM-DD y fechas que existen. Un Date se toma en hora de Argentina.

Validadores

CUIT/CUIL (módulo 11) y CBU (dual block: verifica el dígito de cada uno de sus dos bloques).

Certificados y QR

certificateInfo lee vigencia y CUIT del certificado; generarUrlQR arma la URL del QR de comprobantes. Cert y clave se validan al crear el cliente.

Errores tipados

ArcaError, ArcaAuthError, ArcaTicketVigenteError, ArcaSoapError, ArcaServiceError, ArcaRechazoError, ArcaValidationError, ArcaResponseError. Todos los SDKs lanzan ArcaRechazoError cuando ARCA rechaza una operación.

Base para SDKs

ArcaSdkBase y SoapServiceClient: WSAA propio o compartido, transporte, eventos on/off, signal global y endpoints por entorno. Los clientes de bajo nivel se crean con { endpoint, transport } y cada SDK exporta ENDPOINTS con la misma forma.

Schemas del XSD

@ramiidv/arca-common/schema valida y serializa requests en el orden del XSD (incluidos los xsd:choice, donde va un elemento u otro), redondea mitad al par como piden los manuales y decodifica respuestas con tipos, sin perder ceros ni decimales. La API usa camelCase y xml() guarda el nombre de ARCA.

Testing

@ramiidv/arca-common/testing: fetch simulado, envelopes SOAP, ticket falso y un comparador de schemas contra el WSDL oficial.

Instalá @ramiidv/arca-common

TypeScript nativo, Node.js 22.12+, sin librerías SOAP: las únicas dependencias externas son fast-xml-parser y node-forge (vía arca-common). Gratis, open source, MIT.