npm.io
3.0.1 • Published 3 weeks ago

creditu-common-library

Licence
ISC
Version
3.0.1
Deps
7
Size
334 kB
Vulns
0
Weekly
0

Creditú Common Library

Librería TypeScript con los módulos y funciones matemáticas y financieras que usan las aplicaciones de Creditú: cálculo de oferta hipotecaria, deuda/amortización y ratios de endeudamiento.

Instalar

npm i creditu-common-library

Módulos

  • math — MathService: aritmética de precisión sobre dinero.js (add, subtract, multiply, divide, round). Todos los demás servicios reciben una instancia en su constructor: new MathService(useRound = true, precision = 6).
  • offer — cálculo de oferta (flujo de originación). OfferService.calculateCreditAmountToOffer(inputs, params) → OfferResponse orquesta los sub-servicios ConstantsService, CreditInsuranceService, FinanceService, InstallmentService, LoanToValueService, MaximumLocalService y OperationalExpensesService.
  • debt — deuda activa y amortización (flujo de servicing): AmortizationService, BalanceService, InflationService, InstallmentService, InsuranceService, InterestService, LateService, MonthlyPaymentService.
  • shared/models — value objects (validan en el constructor) y enums compartidos.
  • middlewares — AppLoggerMiddleware (logger HTTP para NestJS).

Cada función lleva en su JSDoc el enlace a la definición matemática en la wiki de Oferta.

Uso

import { MathService } from 'creditu-common-library/math';
import { OfferService } from 'creditu-common-library/offer/services';
import { OfferInputs, OfferParams } from 'creditu-common-library/offer/models/dto';

const offerService = new OfferService(new MathService(true, 10));
const offer = offerService.calculateCreditAmountToOffer(inputs, params);

Ratios de endeudamiento (desde 3.0.0)

Regla de Riesgo (24-ago-2026): la deuda de largo plazo (longTermMonthlyFee, p. ej. un hipotecario con otro banco) afecta solo la Carga Financiera.

Ratio Campo Fórmula
Dividendo Renta (DR) frontEndRatio cuota del crédito / ingreso
Carga Financiera (CF) backEndRatio (cuota del crédito + LP + CP) / ingreso

El máximo local por DR (approvedAmountIncomeDividend) es el inverso del DR y ya no descuenta la cuota LP; el máximo local por CF sí. Detalle en openspec/specs/offer-debt-ratios/spec.md.

Breaking en 3.0.0: OfferService.getFrontEndRatio(creditInstallment, monthlyIncome, creditInsuranceFeeTermDefinition, creditInsuranceInstallment?) y MaximumLocalService.incomeDividend(params) perdieron el parámetro de cuota de largo plazo.

Desarrollo

npm run build            # compila a lib/
npm run lint             # tsc --noEmit + eslint
npm run test:unit        # unit (.spec.ts en src/)
npm run test:cov         # unit con cobertura (umbral 80 %)
npm run test:functional  # suite funcional en test/

Para probar en un consumidor sin publicar: npm link aquí y npm link creditu-common-library en el otro repo.

Publicar

  1. Mergear a master con la versión ya subida en package.json (npm version <major|minor|patch> --no-git-tag-version).
  2. git tag -a vX.Y.Z -m "..." && git push origin vX.Y.Z → publish.yml compila y publica vía OIDC (sin tokens).