UNPKG

chilerut

Version:

Una librería con diversas utilidades para el RUN/RUT chileno.

70 lines (61 loc) 2.12 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/index.ts function reverseStr(rut) { return rut.split("").reduce((acc, char) => char + acc, ""); } function sanitiseRut(rut) { return rut.toString().replace(/[^\dKk]/g, ""); } function fullySanitiseRut(rut) { return rut.toString().replace(/\D/g, ""); } function getCheckDigit(rut) { const local = [...reverseStr(fullySanitiseRut(rut))]; let sum = 0; let v = 2; for (let i = 0; i < local.length; i++, v < 7 ? v++ : v = 2) { sum += +local[i] * v; } const result = 11 - sum % 11; if (result === 11) { return "0"; } else if (result <= 9) { return result.toString(); } else { return "K"; } } function validateRut(rut) { const format = /^(?=.{4,12}$)((\d{1,3}(\.\d{3}){0,2})-([\dkK]))$/; if (!format.test(rut)) { return false; } const sanitised = sanitiseRut(rut); const correlative = sanitised.slice(0, -1); const checkDigit = sanitised[sanitised.length - 1]; const verifiedDigit = getCheckDigit(correlative); return checkDigit.toLowerCase() === verifiedDigit.toLowerCase(); } var defaultMulOpts = { count: 30, dots: true, hyphen: true }; var defaultOpts = { dots: true, hyphen: true }; function generateRut(opts = defaultOpts) { const rut = Math.floor(1e5 + Math.random() * 29e6); return "" + (opts.dots ? rut.toLocaleString("es-CL") : rut.toString()) + ((opts == null ? void 0 : opts.hyphen) ? "-" : "") + getCheckDigit("" + rut); } function generateMulRut(opts = defaultMulOpts) { if (Object.keys(opts).length === 0) { return []; } const mulRut = new Array(opts.count); for (let i = 0; i < mulRut.length; i++) { mulRut[i] = generateRut(opts); } return mulRut; } function formatRut(rut) { return new Intl.NumberFormat("es-CL").format(+rut.slice(0, -1)) + "-" + rut[rut.length - 1]; } exports.formatRut = formatRut; exports.fullySanitiseRut = fullySanitiseRut; exports.generateMulRut = generateMulRut; exports.generateRut = generateRut; exports.getCheckDigit = getCheckDigit; exports.sanitiseRut = sanitiseRut; exports.validateRut = validateRut;