Saltar al contenido principal

Parsers

Los parsers validan la entrada y devuelven un objeto estructurado. Lanzan un DrUtilsError si la entrada no es válida (ver Manejo de errores). Para variantes que no lanzan excepciones, usar los Safe Parsers.

parseCedula​

Descompone una cédula en sus partes constituyentes.

Argumentos

ParámetroTipoDescripción
cedulastringCédula sin formato o con guiones

Retorna ParsedCedula — { municipioCode, sequence, checkDigit, formatted }.

Ejemplo

import { parseCedula } from 'dr-utils'

const result = parseCedula('402-2057991-2')
// {
// municipioCode: '402',
// sequence: '2057991',
// checkDigit: '2',
// formatted: '402-2057991-2'
// }

parseRNC​

Descompone un RNC (o cédula usada como RNC) en sus partes. El campo kind indica si la entrada era un RNC de 9 dígitos o una cédula de 11 dígitos.

Argumentos

ParámetroTipoDescripción
rncstringRNC o cédula sin formato o con guiones

Retorna ParsedRNC — incluye kind: 'rnc' | 'cedula' más campos específicos del tipo.

Ejemplo

import { parseRNC } from 'dr-utils'

const rnc = parseRNC('130-72075-4')
// { kind: 'rnc', sequence: '13072075', checkDigit: '4', formatted: '130-72075-4' }

const cedula = parseRNC('40220579912')
// { kind: 'cedula', municipioCode: '402', sequence: '2057991', checkDigit: '2', formatted: '402-2057991-2' }

parseNCF​

Descompone un NCF en sus partes, incluyendo el nombre del tipo de documento fiscal.

Argumentos

ParámetroTipoDescripción
ncfstringCadena NCF sin formato (físico 11 caracteres o electrónico 13 caracteres)

Retorna ParsedNCF — { kind, series, typeCode, typeName, sequence, formatted }.

Ejemplo

import { parseNCF } from 'dr-utils'

const result = parseNCF('B0183920391')
// {
// kind: 'physical',
// series: 'B',
// typeCode: '01',
// typeName: 'Factura de Crédito Fiscal',
// sequence: '83920391',
// formatted: 'B01-83920391'
// }

parsePhoneNumber​

Descompone un número de teléfono dominicano en sus partes constituyentes.

Argumentos

ParámetroTipoDescripción
numberstringNúmero de teléfono en cualquier formato dominicano aceptado

Retorna ParsedPhoneNumber — { areaCode, prefix, line, national, international }.

Ejemplo

import { parsePhoneNumber } from 'dr-utils'

const result = parsePhoneNumber('(809) 220-1111')
// { areaCode: '809', prefix: '220', line: '1111', national: '(809) 220-1111', international: '+18092201111' }

normalizePhoneNumber​

Elimina todo el formato de un número de teléfono dominicano, retornando solo los 10 dígitos.

Argumentos

ParámetroTipoDescripción
numberstringNúmero de teléfono en cualquier formato dominicano aceptado

Retorna string — número de teléfono normalizado de 10 dígitos.

Ejemplo

import { normalizePhoneNumber } from 'dr-utils'

normalizePhoneNumber('(809) 220-1111') // '8092201111'

parsePlate​

Descompone una placa de vehículo dominicana en su categoría y secuencia.

Argumentos

ParámetroTipoDescripción
platestringCadena de placa (sin distinción entre mayúsculas y minúsculas)

Retorna ParsedPlate — { category, categoryName, sequence, formatted }.

Ejemplo

import { parsePlate } from 'dr-utils'

const result = parsePlate('EL12345')
// { category: 'EL', categoryName: 'Eléctrico', sequence: '12345', formatted: 'EL12345' }

Safe Parsers​

Los safe parsers envuelven sus contrapartes que lanzan excepciones y devuelven un Result<T> en su lugar. En caso de éxito, el valor también incluye un campo raw con el identificador normalizado.

Disponibles: safeParseCedula, safeParseRNC, safeParseNCF, safeParsePhoneNumber, safeParsePlate

Retorna Result<T> — { ok: true, value: T & { raw } } | { ok: false, error: string }.

Ejemplo

import { safeParseCedula } from 'dr-utils'

const result = safeParseCedula('402-2057991-2')
if (result.ok) {
console.log(result.value.municipioCode) // '402'
console.log(result.value.raw) // '40220579912' (tipo Cedula con marca de tipo)
} else {
console.error(result.error) // mensaje de error
}