Skip to content

Repository files navigation

@devlabscl/chile-utils

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

Instalacion

npm install @devlabscl/chile-utils

Uso

Importa 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'

Modulos

chile-utils/rut

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'

chile-utils/currency

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' }

chile-utils/phone

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 }

chile-utils/location

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 RM

chile-utils/holidays

import { 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)

chile-utils/tax

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 personalizada

chile-utils/banks

import { 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.

chile-utils/date

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']

chile-utils/address

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' }

chile-utils/documents

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' }

chile-utils/validators

import { isValidEmail, isChileanEmail } from '@devlabscl/chile-utils/validators';

isValidEmail('user@example.com');   // true
isChileanEmail('user@empresa.cl');  // true
isChileanEmail('user@gmail.com');   // false

Tipos

Todos 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';

Desarrollo

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 tipos

Licencia

MIT - devlabs

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages