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.0import {
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 existeCaracterí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.