1.1.2 • Published 2 years ago
loanjs v1.1.2
LoanJS
Super small (~500B) and fast module to calculate loan in js (browser/node.js) for equal/decreasing/annuity/annuityDue installments, the sum of interest, etc, with TypeScript support
Getting Started
Install with:
npm install loanjs
Calculating Loan:
import { Loan } from 'loanjs';
// or
const { Loan } = require('loanjs');
const loan = new Loan(
1000, // amount
12, // installments number
5, // interest rate
'annuity' // loanType: 'annuity' | 'annuityDue' | 'diminishing' | GetNextInstalmentPartFunction
);
/** returns
{
installments : [
{
capital : number,
interest : number,
installment : number,
remain : number
},
//...
],
amount : number,
interestSum : number,
capitalSum : number,
sum : number
}
*/
Documentation
Loan
LoanJS.Loan(amount, installmentsNumber, interestRate, loanType)
Arguments
Argument | type | default | Description |
---|---|---|---|
amount | number | *required | full amount of Loan |
installmentsNumber | number | *required | how many installments will be (in months) |
interestRate | number | *required | interest rate in percent (ex. 3.5) |
loanType | string or fn | annuity | annuity | annuityDue | diminishing | GetNextInstalmentPartFunction |
interface InstallmentPart {
capital: number;
interest: number;
installment: number;
}
type GetNextInstalmentPartFunction = (
amount: number,
installmentsNumber: number,
interestRateMonth: number,
capitalSum: number
) => InstallmentPart;
Returns
{
installments : [
{
capital : number,
interest : number,
installment : number,
remain : number
}
],
amount : number,
interestSum : number,
capitalSum : number,
sum : number
}
Examples
typescript example
import { Loan } from 'loanjs';
const annuityLoan = new Loan(1000, 12, 5, 'annuity');
const annuityDueLoan = new Loan(1000, 12, 5, 'annuityDue');
const diminishingLoan = new Loan(1000, 12, 5, 'diminishing');
const customInstalmentLoan = new Loan(1000, 12, 5, getNext10Instalment);
function getNext10Instalment (amount: number, installmentsNumber: number, capitalSum: number, interestRateMonth: number) {
const capital = rnd(amount / installmentsNumber);
const interest = 10;
const installment = capital + interest;
return { capital, interest, installment };
}
nodejs example
import { Loan } from 'loanjs';
// or
const { Loan } = require('loanjs');
const loan_1 = new Loan(1000, 12, 5, 'diminishing');
// loan on 1 000($) in 12 loanType installments (ex. months) with 5% interest rate
const loan_2 = new Loan(500000, 360, 3.5, 'annuity');
// loan on 500 000($) in 360 equal installments (30 years) with 3.5% interest rate
Browser example:
You can also render loan as html table
<script src="../../dist/loan.js"></script>
<script src="../../dist/loanToHtmlTable.js"></script>
<script>
const loan = new LoanJS.Loan(1000, 12, 5, 'annuity');
const div = document.createElement("div");
div.innerHTML = LoanJS.loanToHtmlTable(loan); // loan rendering as html table string
document.body.appendChild(div);
</script>
more examples here
Similar projects
- InterestJS - counting regular savings
Contributing
Im open for contributors :).
Release History
2023-07-25 v1.1.0
- add
annuityDue
interest rate loan type - changing the fourth argument
diminishing
toloanType
(annuity
|diminishing
|annuityDue
), with backward compatibility (false == 'annuity', true == 'diminishing') - refactor getNextInstalment to be open for extensions
- add option to provide function to loanType to customize instalments counting
2023-06-23 v1.0.11
- add TypeScript types
- code cleanup
- packages update
2017-08-06 v1.0.0
- go to es6
- make dist files
- make 100% covered tests
2016-02-29 v0.1.4
- update dependencies
2015-10-12 v0.1.3
- fixing typo intrest -> interest #3
- update dependencies
2014-11-10 v0.0.4
- update dependencies
2014-11-10 v0.0.2
- now you can use it in node/browserify and browser
License
Copyright (c) 2023 Grzegorz Klimek Licensed under the MIT license.
1.1.1
2 years ago
1.1.0
2 years ago
1.0.9
2 years ago
1.1.2
2 years ago
1.0.11
2 years ago
1.0.10
2 years ago
1.0.12
2 years ago
1.0.8
3 years ago
1.0.7
4 years ago
1.0.6
4 years ago
1.0.4
6 years ago
1.0.3
7 years ago
1.0.2
8 years ago
1.0.1
8 years ago
1.0.0
8 years ago
0.1.5
9 years ago
0.1.4
9 years ago
0.1.3
10 years ago
0.1.1
10 years ago
0.0.8
10 years ago
0.0.7
11 years ago
0.0.6
11 years ago
0.0.5
11 years ago
0.0.4
11 years ago
0.0.2
11 years ago
0.0.0
11 years ago