Utilidades para desarrollo en Chile. RUT, moneda, comunas, feriados, impuestos, bancos y mas.
- Zero dependencias
- TypeScript + JavaScript
- Tree-shakeable (importa solo lo que necesitas)
- ESM + CommonJS
npm install @devlabscl/chile-utilsImporta solo el modulo que necesitas:
import { formatRut, isValidRut } from '@devlabscl/chile-utils/rut';
import { formatCLP } from '@devlabscl/chile-utils/currency';
import { isHoliday } from '@devlabscl/chile-utils/holidays';O importa todo:
import { rut, currency, holidays } from '@devlabscl/chile-utils';
rut.formatRut('123456785'); // '12.345.678-5'
currency.formatCLP(1500000); // '$ 1.500.000'import { formatRut, unformatRut, sanitizeRut, isValidRut, validateRut, getDv, generateRut } from '@devlabscl/chile-utils/rut';
formatRut('123456785'); // '12.345.678-5'
unformatRut('12.345.678-5'); // '123456785'
isValidRut('12.345.678-5'); // true
getDv('12345678'); // '5'
generateRut(); // '18.432.567-3' (aleatorio, para testing)
generateRut({ formatted: false }); // '184325673'import { formatCLP, formatUF, formatUTM, formatUSD, formatEUR, formatNumber, formatCurrency, parseCLP, getCurrencyConfig } from '@devlabscl/chile-utils/currency';
formatCLP(1500000); // '$ 1.500.000'
formatUF(3450.5); // '3.450,50 UF'
formatUTM(65000); // '65.000 UTM'
formatUSD(1250.99); // 'US$ 1.250,99'
formatEUR(1250.99); // '€ 1.250,99'
formatNumber(1234567); // '1.234.567'
formatCurrency(1500000, 'CLP'); // '$ 1.500.000'
parseCLP('$ 1.500.000'); // 1500000
getCurrencyConfig('CLP'); // { code: 'CLP', symbol: '$', name: 'Peso Chileno', decimals: 0, position: 'prefix' }import { isValidPhone, isValidMobile, isValidLandline, formatPhone, parsePhone } from '@devlabscl/chile-utils/phone';
isValidPhone('+56912345678'); // true
isValidPhone('912345678'); // true
isValidMobile('+56912345678'); // true
isValidLandline('+56221234567'); // true
formatPhone('56912345678'); // '+56 9 1234 5678'
formatPhone('221234567'); // '+56 2 2123 4567'
parsePhone('+56912345678'); // { countryCode: '56', areaCode: '9', number: '12345678', isMobile: true }import { getRegiones, getRegionByNumber, getRegionByIso, getProvincias, getProvinciasByRegion, getComunas, getComunaByCode, searchComunas, getComunasByRegion } from '@devlabscl/chile-utils/location';
getRegiones(); // [{ name: 'Arica y Parinacota', number: 'XV', iso: 'CL-AP', ... }, ...]
getRegionByNumber('XIII'); // Region Metropolitana
getRegionByIso('CL-RM'); // Region Metropolitana
getProvincias(); // todas las provincias de Chile
getProvinciasByRegion('XIII'); // provincias de la RM
getComunas(); // todas las comunas de Chile (340+)
getComunaByCode('13101'); // { name: 'Santiago', code: '13101', ... }
searchComunas('provi'); // [{ name: 'Providencia', ... }]
getComunasByRegion('XIII'); // comunas de la RMimport { getHolidays, isHoliday, getNextHoliday, isBusinessDay, addBusinessDays, businessDaysBetween } from '@devlabscl/chile-utils/holidays';
getHolidays(2024); // [{ date: Date, name: 'Ano Nuevo', type: 'civil', irrenunciable: true }, ...]
isHoliday(new Date('2024-09-18')); // true
getNextHoliday(); // proximo feriado desde hoy
isBusinessDay(new Date()); // true/false
addBusinessDays(new Date(), 5); // salta fines de semana y feriados
addBusinessDays(new Date(), -3); // retrocede 3 dias habiles
businessDaysBetween(start, end); // dias habiles entre dos fechas (excluyendo extremos)Feriados incluidos (17 total):
- 15 feriados fijos (Ano Nuevo, Dia del Trabajo, Glorias Navales, Fiestas Patrias, Navidad, etc.)
- 2 feriados movibles (Viernes Santo, Sabado Santo)
import { calculateIVA, addIVA, removeIVA, extractIVA, calculateBoleta, getBoletaRate, IVA_RATE, BOLETA_RETENCION_RATE } from '@devlabscl/chile-utils/tax';
// IVA (19%)
IVA_RATE; // 0.19
calculateIVA(100000); // { neto: 100000, iva: 19000, total: 119000 }
addIVA(100000); // 119000
removeIVA(119000); // 100000
extractIVA(119000); // 19000
// Boleta de honorarios (tasa segun Ley 21.133)
getBoletaRate(2024); // 0.1375 (13,75%)
getBoletaRate(2025); // 0.145 (14,50%)
getBoletaRate(2026); // 0.1525 (15,25%)
getBoletaRate(2027); // 0.16 (16,00%)
getBoletaRate(2028); // 0.17 (17,00%)
BOLETA_RETENCION_RATE; // tasa vigente del ano actual
calculateBoleta(1000000); // { bruto: 1000000, retencion: ..., liquido: ..., tasaRetencion: ... }
calculateBoleta(1000000, 0.10); // tasa personalizadaimport { getBanks, getBankByCode, getBankBySbifCode, searchBanks, getAccountTypes } from '@devlabscl/chile-utils/banks';
getBanks(); // lista completa de bancos chilenos
getBankByCode('037'); // { code: '037', name: 'Banco Santander Chile', shortName: 'Santander', ... }
getBankBySbifCode('012'); // Banco del Estado de Chile
searchBanks('estado'); // [{ name: 'Banco del Estado de Chile', ... }]
getAccountTypes(); // [{ value: 'corriente', label: 'Cuenta Corriente' }, ...]Bancos incluidos: Banco de Chile, BancoEstado, Santander, BCI, Banco Itau Chile, Scotiabank, BICE, Security, Falabella, Ripley, Consorcio, BTG Pactual, HSBC, Internacional, Bank of China, China Construction Bank, Banco Do Brasil.
Tipos de cuenta: Cuenta Corriente, Cuenta Vista / Cuenta RUT, Cuenta de Ahorro, Chequera Electronica.
import { formatDateCL, formatDateTimeCL, formatRelativeDate, getMonthName, getDayName, MONTHS_ES, DAYS_ES } from '@devlabscl/chile-utils/date';
formatDateCL(new Date()); // '12/04/2026'
formatDateCL(new Date(), { long: true }); // '12 de Abril de 2026'
formatDateTimeCL(new Date()); // '12/04/2026 14:30'
formatRelativeDate(new Date(Date.now() - 3600000)); // 'hace 1 hora'
getMonthName(0); // 'Enero'
getDayName(1); // 'Lunes'
MONTHS_ES; // ['Enero', 'Febrero', ..., 'Diciembre']
DAYS_ES; // ['Domingo', 'Lunes', ..., 'Sabado']import { formatAddress, parseAddress } from '@devlabscl/chile-utils/address';
formatAddress({
street: 'Av. Providencia',
number: '1234',
unit: 'Depto 501',
comuna: 'Providencia',
region: 'Metropolitana'
});
// 'Av. Providencia 1234, Depto 501, Providencia, Metropolitana'
parseAddress('Av. Providencia 1234, Depto 501, Providencia');
// { street: 'Av. Providencia', number: '1234', unit: 'Depto 501', comuna: 'Providencia' }import { isValidCI, isValidPassport, detectDocumentType, parseDocument } from '@devlabscl/chile-utils/documents';
isValidCI('12.345.678-5'); // true (CI = RUT en Chile)
isValidPassport('AAB123456'); // true
detectDocumentType('12.345.678-5'); // 'RUT'
detectDocumentType('AAB123456'); // 'PASSPORT'
parseDocument('123456785'); // { type: 'RUT', value: '123456785', formatted: '12.345.678-5' }import { isValidEmail, isChileanEmail } from '@devlabscl/chile-utils/validators';
isValidEmail('user@example.com'); // true
isChileanEmail('user@empresa.cl'); // true
isChileanEmail('user@gmail.com'); // falseTodos los tipos estan exportados:
import type { CurrencyCode, CurrencyConfig } from '@devlabscl/chile-utils/currency';
import type { Region, Province, Commune } from '@devlabscl/chile-utils/location';
import type { Holiday, HolidayType } from '@devlabscl/chile-utils/holidays';
import type { TaxBreakdown, BoletaBreakdown } from '@devlabscl/chile-utils/tax';
import type { Bank, AccountType } from '@devlabscl/chile-utils/banks';
import type { Address } from '@devlabscl/chile-utils/address';
import type { DocumentType, DocumentInfo } from '@devlabscl/chile-utils/documents';
import type { PhoneInfo } from '@devlabscl/chile-utils/phone';npm run dev # modo watch
npm run build # compilar
npm run test # tests en modo watch
npm run test:run # ejecutar tests una vez
npm run typecheck # verificar tiposMIT - devlabs