moneyfunx 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,11 +21,11 @@ export declare function determineExtraPayment(loans: ILoan[], payment: number):
21
21
  *
22
22
  * @param {Loan} loan The loan serving as the base for carryover
23
23
  * @param {number} loanPayment The payment applied to the loan
24
- * @param {number} loanCarryover The amount of balance remaining on the loan after N-1 of N required payments of loanPayment to zero the balance of the Loan
24
+ * @param {number} loanFinalPayment The (partial) amount of the final payment to the loan
25
25
  * @param {boolean} reduceMinimum Flag to reduce the total payment amount by a loan's minimum when that loan is paid off
26
26
  * @returns {number} The carryover to apply to the last payment on loan N+1
27
27
  */
28
- export declare function determineCarryover(loan: Loan, loanPayment: number, loanCarryover: number, reduceMinimum: boolean): number;
28
+ export declare function determineCarryover(loan: Loan, loanPayment: number, loanFinalPayment: number, reduceMinimum: boolean): number;
29
29
  /**
30
30
  *
31
31
  * Calculates the amortization schedule for a loan paid with a payment
@@ -27,16 +27,16 @@ export function determineExtraPayment(loans, payment) {
27
27
  *
28
28
  * @param {Loan} loan The loan serving as the base for carryover
29
29
  * @param {number} loanPayment The payment applied to the loan
30
- * @param {number} loanCarryover The amount of balance remaining on the loan after N-1 of N required payments of loanPayment to zero the balance of the Loan
30
+ * @param {number} loanFinalPayment The (partial) amount of the final payment to the loan
31
31
  * @param {boolean} reduceMinimum Flag to reduce the total payment amount by a loan's minimum when that loan is paid off
32
32
  * @returns {number} The carryover to apply to the last payment on loan N+1
33
33
  */
34
- export function determineCarryover(loan, loanPayment, loanCarryover, reduceMinimum) {
34
+ export function determineCarryover(loan, loanPayment, loanFinalPayment, reduceMinimum) {
35
35
  switch (true) {
36
36
  case reduceMinimum:
37
- return Math.max(loanPayment - loanCarryover - loan.minPayment, 0);
37
+ return Math.max(loanPayment - loan.minPayment - loanFinalPayment, 0);
38
38
  default:
39
- return Math.max(loanPayment - loanCarryover, 0);
39
+ return Math.max(loanPayment - loanFinalPayment, 0);
40
40
  }
41
41
  }
42
42
  /**
@@ -110,7 +110,7 @@ export function payLoans(loans, payment, reduceMinimum = false) {
110
110
  const firstLoanPrincipalRemaining = loanPrincipalsRemaining[firstLoan.id];
111
111
  const periodsToPay = firstLoan.numPaymentsToZero(firstLoanPayment, firstLoanPrincipalRemaining);
112
112
  const firstLoanAmortizedPayments = amortizePayments(firstLoan, firstLoanPrincipalRemaining, firstLoanPayment, periodsToPay, periodsElapsed);
113
- const naiveFirstLoanCarryover = firstLoanPayment - (firstLoan.principalRemaining(periodsToPay - 1, firstLoanPayment, firstLoanPrincipalRemaining) + firstLoan.accrueInterest(firstLoan.principalRemaining(periodsToPay - 1, firstLoanPayment, firstLoanPrincipalRemaining)));
113
+ const firstLoanFinalPayment = firstLoan.principalRemaining(periodsToPay - 1, firstLoanPayment, firstLoanPrincipalRemaining) + firstLoan.accrueInterest(firstLoan.principalRemaining(periodsToPay - 1, firstLoanPayment, firstLoanPrincipalRemaining));
114
114
  paymentSchedule[firstLoan.id].amortizationSchedule = [
115
115
  ...paymentSchedule[firstLoan.id].amortizationSchedule,
116
116
  ...firstLoanAmortizedPayments
@@ -127,7 +127,7 @@ export function payLoans(loans, payment, reduceMinimum = false) {
127
127
  // handle calculating information for the rest of the loans
128
128
  loans.slice(paidLoans).forEach((loan, index) => {
129
129
  const loanPrincipalRemaining = loanPrincipalsRemaining[loan.id];
130
- const loanAmortizedPayments = amortizePayments(loan, loanPrincipalRemaining, loan.minPayment, Math.min(periodsToPay, loan.numPaymentsToZero(loan.minPayment, loanPrincipalRemaining)), periodsElapsed, (index === 0 ? determineCarryover(firstLoan, firstLoanPayment, naiveFirstLoanCarryover, reduceMinimum) : 0));
130
+ const loanAmortizedPayments = amortizePayments(loan, loanPrincipalRemaining, loan.minPayment, Math.min(periodsToPay, loan.numPaymentsToZero(loan.minPayment, loanPrincipalRemaining)), periodsElapsed, (index === 0 ? determineCarryover(firstLoan, firstLoanPayment, firstLoanFinalPayment, reduceMinimum) : 0));
131
131
  paymentSchedule[loan.id].amortizationSchedule = [
132
132
  ...paymentSchedule[loan.id].amortizationSchedule,
133
133
  ...loanAmortizedPayments,
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1740424386870" clover="3.2.0">
3
- <project timestamp="1740424386870" name="All files">
2
+ <coverage generated="1740425839159" clover="3.2.0">
3
+ <project timestamp="1740425839159" name="All files">
4
4
  <metrics statements="343" coveredstatements="343" conditionals="51" coveredconditionals="51" methods="19" coveredmethods="19" elements="413" coveredelements="413" complexity="0" loc="343" ncloc="343" packages="2" files="8" classes="8"/>
5
5
  <package name="src">
6
6
  <metrics statements="7" coveredstatements="7" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
@@ -119,8 +119,8 @@
119
119
  <line num="103" count="9" type="stmt"/>
120
120
  <line num="104" count="9" type="stmt"/>
121
121
  <line num="111" count="1" type="cond" truecount="1" falsecount="0"/>
122
- <line num="112" count="547" type="stmt"/>
123
- <line num="113" count="547" type="stmt"/>
122
+ <line num="112" count="546" type="stmt"/>
123
+ <line num="113" count="546" type="stmt"/>
124
124
  <line num="121" count="1" type="cond" truecount="1" falsecount="0"/>
125
125
  <line num="122" count="51" type="stmt"/>
126
126
  <line num="123" count="51" type="stmt"/>
@@ -216,21 +216,21 @@
216
216
  <line num="94" count="13" type="stmt"/>
217
217
  <line num="96" count="13" type="stmt"/>
218
218
  <line num="97" count="13" type="cond" truecount="1" falsecount="0"/>
219
- <line num="98" count="540" type="stmt"/>
220
- <line num="99" count="540" type="stmt"/>
221
- <line num="100" count="540" type="cond" truecount="1" falsecount="0"/>
219
+ <line num="98" count="539" type="stmt"/>
220
+ <line num="99" count="539" type="stmt"/>
221
+ <line num="100" count="539" type="cond" truecount="1" falsecount="0"/>
222
222
  <line num="101" count="13" type="cond" truecount="1" falsecount="0"/>
223
- <line num="102" count="540" type="stmt"/>
224
- <line num="103" count="540" type="stmt"/>
225
- <line num="104" count="540" type="stmt"/>
226
- <line num="105" count="540" type="stmt"/>
227
- <line num="106" count="540" type="stmt"/>
228
- <line num="107" count="540" type="stmt"/>
229
- <line num="108" count="540" type="stmt"/>
230
- <line num="109" count="540" type="stmt"/>
231
- <line num="110" count="540" type="stmt"/>
232
- <line num="111" count="540" type="stmt"/>
233
- <line num="112" count="540" type="stmt"/>
223
+ <line num="102" count="539" type="stmt"/>
224
+ <line num="103" count="539" type="stmt"/>
225
+ <line num="104" count="539" type="stmt"/>
226
+ <line num="105" count="539" type="stmt"/>
227
+ <line num="106" count="539" type="stmt"/>
228
+ <line num="107" count="539" type="stmt"/>
229
+ <line num="108" count="539" type="stmt"/>
230
+ <line num="109" count="539" type="stmt"/>
231
+ <line num="110" count="539" type="stmt"/>
232
+ <line num="111" count="539" type="stmt"/>
233
+ <line num="112" count="539" type="stmt"/>
234
234
  <line num="113" count="13" type="stmt"/>
235
235
  <line num="114" count="13" type="stmt"/>
236
236
  <line num="126" count="1" type="cond" truecount="1" falsecount="0"/>
@@ -283,6 +283,7 @@
283
283
  <line num="175" count="6" type="stmt"/>
284
284
  <line num="176" count="6" type="stmt"/>
285
285
  <line num="177" count="6" type="stmt"/>
286
+ <line num="178" count="6" type="stmt"/>
286
287
  <line num="179" count="6" type="stmt"/>
287
288
  <line num="180" count="6" type="stmt"/>
288
289
  <line num="181" count="6" type="stmt"/>
@@ -291,11 +292,11 @@
291
292
  <line num="184" count="6" type="stmt"/>
292
293
  <line num="185" count="6" type="stmt"/>
293
294
  <line num="186" count="6" type="stmt"/>
294
- <line num="187" count="6" type="stmt"/>
295
- <line num="188" count="6" type="cond" truecount="1" falsecount="0"/>
296
- <line num="189" count="3" type="stmt"/>
297
- <line num="190" count="6" type="stmt"/>
298
- <line num="192" count="6" type="cond" truecount="1" falsecount="0"/>
295
+ <line num="187" count="6" type="cond" truecount="1" falsecount="0"/>
296
+ <line num="188" count="3" type="stmt"/>
297
+ <line num="189" count="6" type="stmt"/>
298
+ <line num="191" count="6" type="cond" truecount="1" falsecount="0"/>
299
+ <line num="192" count="6" type="stmt"/>
299
300
  <line num="193" count="6" type="stmt"/>
300
301
  <line num="194" count="6" type="stmt"/>
301
302
  <line num="195" count="6" type="stmt"/>
@@ -308,59 +309,58 @@
308
309
  <line num="202" count="6" type="stmt"/>
309
310
  <line num="203" count="6" type="stmt"/>
310
311
  <line num="204" count="6" type="stmt"/>
311
- <line num="205" count="6" type="stmt"/>
312
- <line num="206" count="6" type="cond" truecount="1" falsecount="0"/>
312
+ <line num="205" count="6" type="cond" truecount="1" falsecount="0"/>
313
+ <line num="206" count="4" type="stmt"/>
313
314
  <line num="207" count="4" type="stmt"/>
314
315
  <line num="208" count="4" type="stmt"/>
315
316
  <line num="209" count="4" type="stmt"/>
316
- <line num="210" count="4" type="stmt"/>
317
- <line num="211" count="6" type="cond" truecount="1" falsecount="0"/>
317
+ <line num="210" count="6" type="cond" truecount="1" falsecount="0"/>
318
+ <line num="211" count="6" type="stmt"/>
318
319
  <line num="212" count="6" type="stmt"/>
319
320
  <line num="213" count="6" type="stmt"/>
320
321
  <line num="214" count="6" type="stmt"/>
321
322
  <line num="215" count="6" type="stmt"/>
322
- <line num="216" count="6" type="stmt"/>
323
- <line num="218" count="6" type="cond" truecount="1" falsecount="0"/>
324
- <line num="219" count="146" type="stmt"/>
325
- <line num="220" count="146" type="cond" truecount="1" falsecount="0"/>
326
- <line num="221" count="146" type="stmt"/>
327
- <line num="222" count="146" type="cond" truecount="1" falsecount="0"/>
328
- <line num="223" count="100" type="stmt"/>
329
- <line num="224" count="100" type="stmt"/>
330
- <line num="225" count="100" type="stmt"/>
331
- <line num="226" count="100" type="stmt"/>
332
- <line num="227" count="100" type="stmt"/>
333
- <line num="228" count="100" type="stmt"/>
334
- <line num="229" count="100" type="stmt"/>
335
- <line num="230" count="100" type="cond" truecount="1" falsecount="0"/>
336
- <line num="231" count="46" type="stmt"/>
337
- <line num="232" count="6" type="stmt"/>
323
+ <line num="217" count="6" type="cond" truecount="1" falsecount="0"/>
324
+ <line num="218" count="145" type="stmt"/>
325
+ <line num="219" count="145" type="cond" truecount="1" falsecount="0"/>
326
+ <line num="220" count="145" type="stmt"/>
327
+ <line num="221" count="145" type="cond" truecount="1" falsecount="0"/>
328
+ <line num="222" count="99" type="stmt"/>
329
+ <line num="223" count="99" type="stmt"/>
330
+ <line num="224" count="99" type="stmt"/>
331
+ <line num="225" count="99" type="stmt"/>
332
+ <line num="226" count="99" type="stmt"/>
333
+ <line num="227" count="99" type="stmt"/>
334
+ <line num="228" count="99" type="stmt"/>
335
+ <line num="229" count="99" type="cond" truecount="1" falsecount="0"/>
336
+ <line num="230" count="46" type="stmt"/>
337
+ <line num="231" count="6" type="stmt"/>
338
+ <line num="233" count="6" type="stmt"/>
338
339
  <line num="234" count="6" type="stmt"/>
339
340
  <line num="235" count="6" type="stmt"/>
340
341
  <line num="236" count="6" type="stmt"/>
341
342
  <line num="237" count="6" type="stmt"/>
342
343
  <line num="238" count="6" type="stmt"/>
343
- <line num="239" count="6" type="stmt"/>
344
+ <line num="240" count="6" type="stmt"/>
344
345
  <line num="241" count="6" type="stmt"/>
345
- <line num="242" count="6" type="stmt"/>
346
- <line num="244" count="2" type="cond" truecount="1" falsecount="0"/>
346
+ <line num="243" count="2" type="cond" truecount="1" falsecount="0"/>
347
+ <line num="244" count="6" type="stmt"/>
347
348
  <line num="245" count="6" type="stmt"/>
348
- <line num="246" count="6" type="stmt"/>
349
- <line num="247" count="6" type="cond" truecount="1" falsecount="0"/>
349
+ <line num="246" count="6" type="cond" truecount="1" falsecount="0"/>
350
+ <line num="247" count="6" type="stmt"/>
350
351
  <line num="248" count="6" type="stmt"/>
351
- <line num="249" count="6" type="stmt"/>
352
+ <line num="250" count="6" type="stmt"/>
352
353
  <line num="251" count="6" type="stmt"/>
353
354
  <line num="252" count="6" type="stmt"/>
354
355
  <line num="253" count="6" type="stmt"/>
355
356
  <line num="254" count="6" type="stmt"/>
356
- <line num="255" count="6" type="stmt"/>
357
+ <line num="256" count="2" type="stmt"/>
357
358
  <line num="257" count="2" type="stmt"/>
358
359
  <line num="258" count="2" type="stmt"/>
359
360
  <line num="259" count="2" type="stmt"/>
360
361
  <line num="260" count="2" type="stmt"/>
361
- <line num="261" count="2" type="stmt"/>
362
+ <line num="262" count="2" type="stmt"/>
362
363
  <line num="263" count="2" type="stmt"/>
363
- <line num="264" count="2" type="stmt"/>
364
364
  </file>
365
365
  <file name="sorting.ts" path="/home/runner/work/moneyfunx/moneyfunx/src/lib/sorting.ts">
366
366
  <metrics statements="9" coveredstatements="9" conditionals="3" coveredconditionals="3" methods="3" coveredmethods="3"/>
@@ -2,8 +2,8 @@
2
2
  ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/constants.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}}},"s":{"0":1},"branchMap":{},"b":{},"fnMap":{},"f":{}}
3
3
  ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/errors.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/errors.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":32}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":19}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":62}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":1}}},"s":{"0":1,"1":1,"2":11,"3":11,"4":11,"5":11,"6":1},"branchMap":{"0":{"type":"branch","line":2,"loc":{"start":{"line":2,"column":2},"end":{"line":6,"column":3}},"locations":[{"start":{"line":2,"column":2},"end":{"line":6,"column":3}}]}},"b":{"0":[11]},"fnMap":{"0":{"name":"PaymentTooLowError","decl":{"start":{"line":2,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":2,"column":2},"end":{"line":6,"column":3}},"line":2}},"f":{"0":11}}
4
4
  ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/helperFunctions.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/helperFunctions.ts","all":false,"statementMap":{"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":20}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":17}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":11}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":25}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":53}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":42}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":26}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":35}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":20}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":23}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":17}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":11}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":18}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":49}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":67}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":4}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":29}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":20}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":18}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":23}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":17}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":11}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":10}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":23}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":79}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":34}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":20}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":18}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":22}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":11}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":19}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":62}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":30}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":4}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":1}}},"s":{"14":1,"15":9,"16":9,"17":9,"18":9,"19":9,"20":8,"21":8,"22":8,"23":1,"24":9,"35":1,"36":30,"37":30,"38":30,"39":30,"40":30,"41":30,"42":30,"43":30,"44":30,"45":30,"46":30,"57":1,"58":9,"59":9,"60":9,"61":9,"62":9,"63":9,"64":9,"65":9,"67":9,"77":1,"78":49,"79":49,"80":49,"81":49,"82":49,"83":49,"84":49,"85":49,"86":49},"branchMap":{"0":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":7},"end":{"line":25,"column":1}},"locations":[{"start":{"line":15,"column":7},"end":{"line":25,"column":1}}]},"1":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":24},"end":{"line":23,"column":42}},"locations":[{"start":{"line":20,"column":24},"end":{"line":23,"column":42}}]},"2":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":39},"end":{"line":24,"column":26}},"locations":[{"start":{"line":23,"column":39},"end":{"line":24,"column":26}}]},"3":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":7},"end":{"line":47,"column":1}},"locations":[{"start":{"line":36,"column":7},"end":{"line":47,"column":1}}]},"4":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":7},"end":{"line":68,"column":1}},"locations":[{"start":{"line":58,"column":7},"end":{"line":68,"column":1}}]},"5":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":7},"end":{"line":87,"column":1}},"locations":[{"start":{"line":78,"column":7},"end":{"line":87,"column":1}}]}},"b":{"0":[9],"1":[8],"2":[1],"3":[30],"4":[9],"5":[49]},"fnMap":{"0":{"name":"calculateMinPayment","decl":{"start":{"line":15,"column":7},"end":{"line":25,"column":1}},"loc":{"start":{"line":15,"column":7},"end":{"line":25,"column":1}},"line":15},"1":{"name":"principalRemaining","decl":{"start":{"line":36,"column":7},"end":{"line":47,"column":1}},"loc":{"start":{"line":36,"column":7},"end":{"line":47,"column":1}},"line":36},"2":{"name":"interestPaid","decl":{"start":{"line":58,"column":7},"end":{"line":68,"column":1}},"loc":{"start":{"line":58,"column":7},"end":{"line":68,"column":1}},"line":58},"3":{"name":"numPaymentsToZero","decl":{"start":{"line":78,"column":7},"end":{"line":87,"column":1}},"loc":{"start":{"line":78,"column":7},"end":{"line":87,"column":1}},"line":78}},"f":{"0":9,"1":30,"2":9,"3":49}}
5
- ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/loan.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/loan.ts","all":false,"statementMap":{"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":35}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":36}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":14}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":22}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":27}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":24}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":17}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":28}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":18}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":61}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":21}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":31}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":33}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":41}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":35}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":62}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":58}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":49}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":54}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":26}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":62}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":92}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":42}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":70}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":8}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":19}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":33}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":39}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":21}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":24}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":18}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":6}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":3}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":67}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":41}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":20}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":38}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":44}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":13}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":34}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":76}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":21}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":20}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":38}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":43}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":13}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":34}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":63}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":35}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":18}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":16}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":26}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":15}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":10}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":3}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":15}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":20}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":38}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":43}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":13}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":34}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":70}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":35}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":76}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":29}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":18}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":16}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":26}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":26}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":9}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":26}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":71}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":8}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":1}}},"s":{"12":1,"13":1,"32":1,"55":1,"56":9,"57":9,"58":9,"59":9,"60":9,"61":9,"62":9,"63":9,"64":9,"65":9,"66":9,"67":9,"68":9,"69":9,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"84":1,"85":108,"86":10,"87":10,"88":10,"89":10,"90":98,"91":108,"97":1,"98":9,"99":9,"100":9,"101":9,"102":9,"103":9,"110":1,"111":547,"112":547,"120":1,"121":51,"122":51,"123":51,"124":51,"125":51,"126":51,"135":1,"136":25,"137":25,"138":25,"139":25,"140":25,"141":25,"142":21,"143":21,"144":21,"145":21,"146":21,"147":21,"148":2,"149":25,"158":1,"159":11,"160":11,"161":11,"162":11,"163":11,"164":11,"165":11,"166":8,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":11,"177":1},"branchMap":{"0":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":2},"end":{"line":76,"column":3}},"locations":[{"start":{"line":56,"column":2},"end":{"line":76,"column":3}}]},"1":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":26},"end":{"line":74,"column":54}},"locations":[{"start":{"line":74,"column":26},"end":{"line":74,"column":54}}]},"2":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":16},"end":{"line":75,"column":26}},"locations":[{"start":{"line":75,"column":16},"end":{"line":75,"column":26}}]},"3":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":2},"end":{"line":92,"column":3}},"locations":[{"start":{"line":85,"column":2},"end":{"line":92,"column":3}}]},"4":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":91},"end":{"line":90,"column":5}},"locations":[{"start":{"line":86,"column":91},"end":{"line":90,"column":5}}]},"5":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":4},"end":{"line":91,"column":19}},"locations":[{"start":{"line":90,"column":4},"end":{"line":91,"column":19}}]},"6":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":2},"end":{"line":104,"column":3}},"locations":[{"start":{"line":98,"column":2},"end":{"line":104,"column":3}}]},"7":{"type":"branch","line":111,"loc":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"locations":[{"start":{"line":111,"column":2},"end":{"line":113,"column":3}}]},"8":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":2},"end":{"line":127,"column":3}},"locations":[{"start":{"line":121,"column":2},"end":{"line":127,"column":3}}]},"9":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":2},"end":{"line":150,"column":3}},"locations":[{"start":{"line":136,"column":2},"end":{"line":150,"column":3}}]},"10":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":62},"end":{"line":148,"column":7}},"locations":[{"start":{"line":142,"column":62},"end":{"line":148,"column":7}}]},"11":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":6},"end":{"line":149,"column":10}},"locations":[{"start":{"line":148,"column":6},"end":{"line":149,"column":10}}]},"12":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":2},"end":{"line":177,"column":3}},"locations":[{"start":{"line":159,"column":2},"end":{"line":177,"column":3}}]},"13":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":21},"end":{"line":167,"column":76}},"locations":[{"start":{"line":166,"column":21},"end":{"line":167,"column":76}}]},"14":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":75},"end":{"line":176,"column":8}},"locations":[{"start":{"line":167,"column":75},"end":{"line":176,"column":8}}]}},"b":{"0":[9],"1":[7],"2":[7],"3":[108],"4":[10],"5":[98],"6":[9],"7":[547],"8":[51],"9":[25],"10":[21],"11":[2],"12":[11],"13":[8],"14":[1]},"fnMap":{"0":{"name":"Loan","decl":{"start":{"line":56,"column":2},"end":{"line":76,"column":3}},"loc":{"start":{"line":56,"column":2},"end":{"line":76,"column":3}},"line":56},"1":{"name":"validatePayment","decl":{"start":{"line":85,"column":2},"end":{"line":92,"column":3}},"loc":{"start":{"line":85,"column":2},"end":{"line":92,"column":3}},"line":85},"2":{"name":"calculateMinPayment","decl":{"start":{"line":98,"column":2},"end":{"line":104,"column":3}},"loc":{"start":{"line":98,"column":2},"end":{"line":104,"column":3}},"line":98},"3":{"name":"accrueInterest","decl":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"loc":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"line":111},"4":{"name":"numPaymentsToZero","decl":{"start":{"line":121,"column":2},"end":{"line":127,"column":3}},"loc":{"start":{"line":121,"column":2},"end":{"line":127,"column":3}},"line":121},"5":{"name":"principalRemaining","decl":{"start":{"line":136,"column":2},"end":{"line":150,"column":3}},"loc":{"start":{"line":136,"column":2},"end":{"line":150,"column":3}},"line":136},"6":{"name":"interestPaid","decl":{"start":{"line":159,"column":2},"end":{"line":177,"column":3}},"loc":{"start":{"line":159,"column":2},"end":{"line":177,"column":3}},"line":159}},"f":{"0":9,"1":108,"2":9,"3":547,"4":51,"5":25,"6":11}}
5
+ ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/loan.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/loan.ts","all":false,"statementMap":{"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":35}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":36}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":14}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":22}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":27}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":24}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":17}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":28}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":18}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":61}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":21}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":31}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":33}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":41}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":35}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":62}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":58}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":49}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":54}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":26}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":62}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":92}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":42}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":70}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":8}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":19}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":33}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":39}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":21}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":24}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":18}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":6}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":3}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":67}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":41}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":20}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":38}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":44}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":13}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":34}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":76}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":21}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":20}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":38}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":43}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":13}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":34}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":63}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":35}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":18}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":16}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":26}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":15}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":10}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":3}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":15}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":20}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":38}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":43}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":13}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":34}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":70}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":35}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":76}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":29}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":18}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":16}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":26}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":26}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":9}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":26}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":71}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":8}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":1}}},"s":{"12":1,"13":1,"32":1,"55":1,"56":9,"57":9,"58":9,"59":9,"60":9,"61":9,"62":9,"63":9,"64":9,"65":9,"66":9,"67":9,"68":9,"69":9,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"84":1,"85":108,"86":10,"87":10,"88":10,"89":10,"90":98,"91":108,"97":1,"98":9,"99":9,"100":9,"101":9,"102":9,"103":9,"110":1,"111":546,"112":546,"120":1,"121":51,"122":51,"123":51,"124":51,"125":51,"126":51,"135":1,"136":25,"137":25,"138":25,"139":25,"140":25,"141":25,"142":21,"143":21,"144":21,"145":21,"146":21,"147":21,"148":2,"149":25,"158":1,"159":11,"160":11,"161":11,"162":11,"163":11,"164":11,"165":11,"166":8,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":11,"177":1},"branchMap":{"0":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":2},"end":{"line":76,"column":3}},"locations":[{"start":{"line":56,"column":2},"end":{"line":76,"column":3}}]},"1":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":26},"end":{"line":74,"column":54}},"locations":[{"start":{"line":74,"column":26},"end":{"line":74,"column":54}}]},"2":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":16},"end":{"line":75,"column":26}},"locations":[{"start":{"line":75,"column":16},"end":{"line":75,"column":26}}]},"3":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":2},"end":{"line":92,"column":3}},"locations":[{"start":{"line":85,"column":2},"end":{"line":92,"column":3}}]},"4":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":91},"end":{"line":90,"column":5}},"locations":[{"start":{"line":86,"column":91},"end":{"line":90,"column":5}}]},"5":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":4},"end":{"line":91,"column":19}},"locations":[{"start":{"line":90,"column":4},"end":{"line":91,"column":19}}]},"6":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":2},"end":{"line":104,"column":3}},"locations":[{"start":{"line":98,"column":2},"end":{"line":104,"column":3}}]},"7":{"type":"branch","line":111,"loc":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"locations":[{"start":{"line":111,"column":2},"end":{"line":113,"column":3}}]},"8":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":2},"end":{"line":127,"column":3}},"locations":[{"start":{"line":121,"column":2},"end":{"line":127,"column":3}}]},"9":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":2},"end":{"line":150,"column":3}},"locations":[{"start":{"line":136,"column":2},"end":{"line":150,"column":3}}]},"10":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":62},"end":{"line":148,"column":7}},"locations":[{"start":{"line":142,"column":62},"end":{"line":148,"column":7}}]},"11":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":6},"end":{"line":149,"column":10}},"locations":[{"start":{"line":148,"column":6},"end":{"line":149,"column":10}}]},"12":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":2},"end":{"line":177,"column":3}},"locations":[{"start":{"line":159,"column":2},"end":{"line":177,"column":3}}]},"13":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":21},"end":{"line":167,"column":76}},"locations":[{"start":{"line":166,"column":21},"end":{"line":167,"column":76}}]},"14":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":75},"end":{"line":176,"column":8}},"locations":[{"start":{"line":167,"column":75},"end":{"line":176,"column":8}}]}},"b":{"0":[9],"1":[7],"2":[7],"3":[108],"4":[10],"5":[98],"6":[9],"7":[546],"8":[51],"9":[25],"10":[21],"11":[2],"12":[11],"13":[8],"14":[1]},"fnMap":{"0":{"name":"Loan","decl":{"start":{"line":56,"column":2},"end":{"line":76,"column":3}},"loc":{"start":{"line":56,"column":2},"end":{"line":76,"column":3}},"line":56},"1":{"name":"validatePayment","decl":{"start":{"line":85,"column":2},"end":{"line":92,"column":3}},"loc":{"start":{"line":85,"column":2},"end":{"line":92,"column":3}},"line":85},"2":{"name":"calculateMinPayment","decl":{"start":{"line":98,"column":2},"end":{"line":104,"column":3}},"loc":{"start":{"line":98,"column":2},"end":{"line":104,"column":3}},"line":98},"3":{"name":"accrueInterest","decl":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"loc":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"line":111},"4":{"name":"numPaymentsToZero","decl":{"start":{"line":121,"column":2},"end":{"line":127,"column":3}},"loc":{"start":{"line":121,"column":2},"end":{"line":127,"column":3}},"line":121},"5":{"name":"principalRemaining","decl":{"start":{"line":136,"column":2},"end":{"line":150,"column":3}},"loc":{"start":{"line":136,"column":2},"end":{"line":150,"column":3}},"line":136},"6":{"name":"interestPaid","decl":{"start":{"line":159,"column":2},"end":{"line":177,"column":3}},"loc":{"start":{"line":159,"column":2},"end":{"line":177,"column":3}},"line":159}},"f":{"0":9,"1":108,"2":9,"3":546,"4":51,"5":25,"6":11}}
6
6
  ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/paymentTypes.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/paymentTypes.ts","all":false,"statementMap":{},"s":{},"branchMap":{},"b":{},"fnMap":{},"f":{}}
7
- ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/payments.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/payments.ts","all":false,"statementMap":{"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":38}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":11}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":39}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":77}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":90}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":40}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":76}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":6}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":35}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":22}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":24}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":25}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":11}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":17}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":72}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":14}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":54}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":33}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":13}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":20}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":18}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":22}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":26}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":23}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":25}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":25}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":30}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":42}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":29}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":50}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":37}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":56}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":56}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":71}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":33}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":29}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":40}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":24}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":6}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":46}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":31}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":39}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":37}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":35}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":25}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":7}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":3}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":30}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":1}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":25}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":16}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":18}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":32}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":25}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":31}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":51}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":53}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":27}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":32}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":26}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":45}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":30}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":6}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":59}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":5}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":25}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":20}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":32}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":33}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":59}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":36}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":48}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":28}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":28}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":68}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":78}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":53}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":23}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":34}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":6}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":56}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":16}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":34}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":23}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":19}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":20}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":6}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":56}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":35}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":25}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":25}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":35}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":35}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":37}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":27}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":27}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":37}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":9}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":7}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":58}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":60}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":35}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":6}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":33}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":35}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":35}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":6}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":19}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":24}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":45}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":6}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":53}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":70}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":53}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":13}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":31}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":24}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":17}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":23}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":33}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":28}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":35}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":12}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":10}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":23}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":42}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":20}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":27}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":34}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":24}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":14}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":8}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":55}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":57}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":33}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":8}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":78}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":63}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":66}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":10}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":44}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":13}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":35}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":73}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":70}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":31}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":42}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":52}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":11}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":20}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":9}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":57}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":15}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":29}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":64}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":27}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":7}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":35}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":3}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":29}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":34}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":59}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":73}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":9}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":7}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":69}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":64}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":50}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":50}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":3}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":28}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":44}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":46}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":51}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":4}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":25}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":1}}},"s":{"6":1,"23":1,"24":8,"25":8,"26":8,"27":8,"28":8,"29":8,"30":8,"32":8,"33":1,"34":1,"35":1,"36":1,"37":7,"38":7,"50":1,"51":6,"52":6,"53":6,"54":6,"55":6,"56":6,"57":6,"58":3,"59":6,"60":3,"61":6,"62":6,"76":1,"77":13,"78":13,"79":13,"80":13,"81":13,"82":13,"83":13,"84":13,"85":1,"86":1,"87":13,"89":13,"90":1,"91":1,"93":13,"95":13,"96":13,"97":540,"98":540,"99":540,"100":13,"101":540,"102":540,"103":540,"104":540,"105":540,"106":540,"107":540,"108":540,"109":540,"110":540,"111":540,"112":13,"113":13,"125":1,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":2,"134":6,"135":6,"136":6,"137":6,"138":6,"139":6,"140":2,"142":2,"143":2,"144":2,"145":2,"146":2,"148":2,"149":6,"150":6,"151":6,"152":6,"153":6,"154":6,"155":6,"156":6,"157":6,"158":6,"159":6,"160":6,"161":6,"162":6,"163":6,"164":6,"165":6,"166":6,"167":6,"168":6,"169":6,"170":6,"171":6,"172":6,"173":6,"174":6,"175":6,"176":6,"178":6,"179":6,"180":6,"181":6,"182":6,"183":6,"184":6,"185":6,"186":6,"187":6,"188":3,"189":6,"191":6,"192":6,"193":6,"194":6,"195":6,"196":6,"197":6,"198":6,"199":6,"200":6,"201":6,"202":6,"203":6,"204":6,"205":6,"206":4,"207":4,"208":4,"209":4,"210":6,"211":6,"212":6,"213":6,"214":6,"215":6,"217":6,"218":146,"219":146,"220":146,"221":146,"222":100,"223":100,"224":100,"225":100,"226":100,"227":100,"228":100,"229":100,"230":46,"231":6,"233":6,"234":6,"235":6,"236":6,"237":6,"238":6,"240":6,"241":6,"243":2,"244":6,"245":6,"246":6,"247":6,"248":6,"250":6,"251":6,"252":6,"253":6,"254":6,"256":2,"257":2,"258":2,"259":2,"260":2,"262":2,"263":2},"branchMap":{"0":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":7},"end":{"line":39,"column":1}},"locations":[{"start":{"line":24,"column":7},"end":{"line":39,"column":1}}]},"1":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":89},"end":{"line":37,"column":3}},"locations":[{"start":{"line":33,"column":89},"end":{"line":37,"column":3}}]},"2":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":39,"column":1}},"locations":[{"start":{"line":37,"column":2},"end":{"line":39,"column":1}}]},"3":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":4},"end":{"line":29,"column":77}},"locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":77}}]},"4":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":7},"end":{"line":63,"column":1}},"locations":[{"start":{"line":51,"column":7},"end":{"line":63,"column":1}}]},"5":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":59,"column":72}},"locations":[{"start":{"line":58,"column":4},"end":{"line":59,"column":72}}]},"6":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":6},"end":{"line":61,"column":54}},"locations":[{"start":{"line":60,"column":6},"end":{"line":61,"column":54}}]},"7":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":7},"end":{"line":114,"column":1}},"locations":[{"start":{"line":77,"column":7},"end":{"line":114,"column":1}}]},"8":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":24},"end":{"line":87,"column":3}},"locations":[{"start":{"line":85,"column":24},"end":{"line":87,"column":3}}]},"9":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":28},"end":{"line":92,"column":3}},"locations":[{"start":{"line":90,"column":28},"end":{"line":92,"column":3}}]},"10":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":55},"end":{"line":112,"column":3}},"locations":[{"start":{"line":97,"column":55},"end":{"line":112,"column":3}}]},"11":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":32},"end":{"line":101,"column":29}},"locations":[{"start":{"line":100,"column":32},"end":{"line":101,"column":29}}]},"12":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":20},"end":{"line":102,"column":21}},"locations":[{"start":{"line":101,"column":20},"end":{"line":102,"column":21}}]},"13":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":7},"end":{"line":264,"column":1}},"locations":[{"start":{"line":126,"column":7},"end":{"line":264,"column":1}}]},"14":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":35},"end":{"line":242,"column":3}},"locations":[{"start":{"line":149,"column":35},"end":{"line":242,"column":3}}]},"15":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":23},"end":{"line":190,"column":5}},"locations":[{"start":{"line":188,"column":23},"end":{"line":190,"column":5}}]},"16":{"type":"branch","line":244,"loc":{"start":{"line":244,"column":28},"end":{"line":255,"column":3}},"locations":[{"start":{"line":244,"column":28},"end":{"line":255,"column":3}}]},"17":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":16},"end":{"line":141,"column":3}},"locations":[{"start":{"line":134,"column":16},"end":{"line":141,"column":3}}]},"18":{"type":"branch","line":192,"loc":{"start":{"line":192,"column":35},"end":{"line":239,"column":5}},"locations":[{"start":{"line":192,"column":35},"end":{"line":239,"column":5}}]},"19":{"type":"branch","line":206,"loc":{"start":{"line":206,"column":19},"end":{"line":211,"column":12}},"locations":[{"start":{"line":206,"column":19},"end":{"line":211,"column":12}}]},"20":{"type":"branch","line":211,"loc":{"start":{"line":211,"column":8},"end":{"line":211,"column":14}},"locations":[{"start":{"line":211,"column":8},"end":{"line":211,"column":14}}]},"21":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":64},"end":{"line":232,"column":7}},"locations":[{"start":{"line":218,"column":64},"end":{"line":232,"column":7}}]},"22":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":39},"end":{"line":230,"column":11}},"locations":[{"start":{"line":222,"column":39},"end":{"line":230,"column":11}}]},"23":{"type":"branch","line":230,"loc":{"start":{"line":230,"column":10},"end":{"line":231,"column":20}},"locations":[{"start":{"line":230,"column":10},"end":{"line":231,"column":20}}]},"24":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":10},"end":{"line":220,"column":66}},"locations":[{"start":{"line":220,"column":10},"end":{"line":220,"column":66}}]},"25":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":8},"end":{"line":247,"column":73}},"locations":[{"start":{"line":247,"column":8},"end":{"line":247,"column":73}}]}},"b":{"0":[8],"1":[1],"2":[7],"3":[18],"4":[6],"5":[3],"6":[3],"7":[13],"8":[1],"9":[1],"10":[540],"11":[13],"12":[527],"13":[2],"14":[6],"15":[3],"16":[6],"17":[6],"18":[6],"19":[4],"20":[2],"21":[146],"22":[100],"23":[46],"24":[1309],"25":[359]},"fnMap":{"0":{"name":"determineExtraPayment","decl":{"start":{"line":24,"column":7},"end":{"line":39,"column":1}},"loc":{"start":{"line":24,"column":7},"end":{"line":39,"column":1}},"line":24},"1":{"name":"determineCarryover","decl":{"start":{"line":51,"column":7},"end":{"line":63,"column":1}},"loc":{"start":{"line":51,"column":7},"end":{"line":63,"column":1}},"line":51},"2":{"name":"amortizePayments","decl":{"start":{"line":77,"column":7},"end":{"line":114,"column":1}},"loc":{"start":{"line":77,"column":7},"end":{"line":114,"column":1}},"line":77},"3":{"name":"payLoans","decl":{"start":{"line":126,"column":7},"end":{"line":264,"column":1}},"loc":{"start":{"line":126,"column":7},"end":{"line":264,"column":1}},"line":126}},"f":{"0":8,"1":6,"2":13,"3":2}}
7
+ ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/payments.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/payments.ts","all":false,"statementMap":{"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":38}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":11}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":39}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":77}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":90}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":40}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":76}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":6}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":35}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":22}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":27}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":25}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":11}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":17}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":75}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":12}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":57}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":33}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":13}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":20}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":18}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":22}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":26}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":23}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":25}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":25}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":30}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":42}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":29}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":50}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":37}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":56}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":56}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":71}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":33}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":29}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":40}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":24}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":6}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":46}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":31}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":39}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":37}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":35}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":25}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":7}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":3}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":30}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":1}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":25}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":16}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":18}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":32}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":25}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":31}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":51}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":53}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":27}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":32}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":26}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":45}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":30}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":6}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":59}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":5}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":25}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":20}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":32}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":33}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":59}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":36}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":48}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":28}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":28}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":68}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":78}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":53}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":23}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":34}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":6}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":56}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":16}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":34}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":23}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":19}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":20}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":6}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":34}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":35}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":25}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":25}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":35}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":35}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":37}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":27}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":27}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":37}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":9}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":6}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":58}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":60}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":35}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":6}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":35}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":35}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":6}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":19}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":24}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":45}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":6}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":53}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":70}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":53}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":13}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":31}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":24}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":17}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":23}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":33}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":28}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":35}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":12}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":10}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":23}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":42}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":20}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":27}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":32}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":24}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":14}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":8}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":55}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":57}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":33}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":8}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":78}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":63}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":66}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":10}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":44}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":13}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":35}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":73}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":70}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":31}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":42}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":52}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":11}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":20}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":9}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":57}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":15}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":29}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":64}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":27}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":7}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":35}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":3}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":29}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":34}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":59}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":73}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":9}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":7}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":69}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":64}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":50}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":50}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":3}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":28}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":44}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":46}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":51}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":4}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":25}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":1}}},"s":{"6":1,"23":1,"24":8,"25":8,"26":8,"27":8,"28":8,"29":8,"30":8,"32":8,"33":1,"34":1,"35":1,"36":1,"37":7,"38":7,"50":1,"51":6,"52":6,"53":6,"54":6,"55":6,"56":6,"57":6,"58":3,"59":6,"60":3,"61":6,"62":6,"76":1,"77":13,"78":13,"79":13,"80":13,"81":13,"82":13,"83":13,"84":13,"85":1,"86":1,"87":13,"89":13,"90":1,"91":1,"93":13,"95":13,"96":13,"97":539,"98":539,"99":539,"100":13,"101":539,"102":539,"103":539,"104":539,"105":539,"106":539,"107":539,"108":539,"109":539,"110":539,"111":539,"112":13,"113":13,"125":1,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":2,"134":6,"135":6,"136":6,"137":6,"138":6,"139":6,"140":2,"142":2,"143":2,"144":2,"145":2,"146":2,"148":2,"149":6,"150":6,"151":6,"152":6,"153":6,"154":6,"155":6,"156":6,"157":6,"158":6,"159":6,"160":6,"161":6,"162":6,"163":6,"164":6,"165":6,"166":6,"167":6,"168":6,"169":6,"170":6,"171":6,"172":6,"173":6,"174":6,"175":6,"176":6,"177":6,"178":6,"179":6,"180":6,"181":6,"182":6,"183":6,"184":6,"185":6,"186":6,"187":3,"188":6,"190":6,"191":6,"192":6,"193":6,"194":6,"195":6,"196":6,"197":6,"198":6,"199":6,"200":6,"201":6,"202":6,"203":6,"204":6,"205":4,"206":4,"207":4,"208":4,"209":6,"210":6,"211":6,"212":6,"213":6,"214":6,"216":6,"217":145,"218":145,"219":145,"220":145,"221":99,"222":99,"223":99,"224":99,"225":99,"226":99,"227":99,"228":99,"229":46,"230":6,"232":6,"233":6,"234":6,"235":6,"236":6,"237":6,"239":6,"240":6,"242":2,"243":6,"244":6,"245":6,"246":6,"247":6,"249":6,"250":6,"251":6,"252":6,"253":6,"255":2,"256":2,"257":2,"258":2,"259":2,"261":2,"262":2},"branchMap":{"0":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":7},"end":{"line":39,"column":1}},"locations":[{"start":{"line":24,"column":7},"end":{"line":39,"column":1}}]},"1":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":89},"end":{"line":37,"column":3}},"locations":[{"start":{"line":33,"column":89},"end":{"line":37,"column":3}}]},"2":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":39,"column":1}},"locations":[{"start":{"line":37,"column":2},"end":{"line":39,"column":1}}]},"3":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":4},"end":{"line":29,"column":77}},"locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":77}}]},"4":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":7},"end":{"line":63,"column":1}},"locations":[{"start":{"line":51,"column":7},"end":{"line":63,"column":1}}]},"5":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":59,"column":75}},"locations":[{"start":{"line":58,"column":4},"end":{"line":59,"column":75}}]},"6":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":4},"end":{"line":61,"column":57}},"locations":[{"start":{"line":60,"column":4},"end":{"line":61,"column":57}}]},"7":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":7},"end":{"line":114,"column":1}},"locations":[{"start":{"line":77,"column":7},"end":{"line":114,"column":1}}]},"8":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":24},"end":{"line":87,"column":3}},"locations":[{"start":{"line":85,"column":24},"end":{"line":87,"column":3}}]},"9":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":28},"end":{"line":92,"column":3}},"locations":[{"start":{"line":90,"column":28},"end":{"line":92,"column":3}}]},"10":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":55},"end":{"line":112,"column":3}},"locations":[{"start":{"line":97,"column":55},"end":{"line":112,"column":3}}]},"11":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":32},"end":{"line":101,"column":29}},"locations":[{"start":{"line":100,"column":32},"end":{"line":101,"column":29}}]},"12":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":20},"end":{"line":102,"column":21}},"locations":[{"start":{"line":101,"column":20},"end":{"line":102,"column":21}}]},"13":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":7},"end":{"line":263,"column":1}},"locations":[{"start":{"line":126,"column":7},"end":{"line":263,"column":1}}]},"14":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":35},"end":{"line":241,"column":3}},"locations":[{"start":{"line":149,"column":35},"end":{"line":241,"column":3}}]},"15":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":23},"end":{"line":189,"column":5}},"locations":[{"start":{"line":187,"column":23},"end":{"line":189,"column":5}}]},"16":{"type":"branch","line":243,"loc":{"start":{"line":243,"column":28},"end":{"line":254,"column":3}},"locations":[{"start":{"line":243,"column":28},"end":{"line":254,"column":3}}]},"17":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":16},"end":{"line":141,"column":3}},"locations":[{"start":{"line":134,"column":16},"end":{"line":141,"column":3}}]},"18":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":35},"end":{"line":238,"column":5}},"locations":[{"start":{"line":191,"column":35},"end":{"line":238,"column":5}}]},"19":{"type":"branch","line":205,"loc":{"start":{"line":205,"column":19},"end":{"line":210,"column":12}},"locations":[{"start":{"line":205,"column":19},"end":{"line":210,"column":12}}]},"20":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":8},"end":{"line":210,"column":14}},"locations":[{"start":{"line":210,"column":8},"end":{"line":210,"column":14}}]},"21":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":64},"end":{"line":231,"column":7}},"locations":[{"start":{"line":217,"column":64},"end":{"line":231,"column":7}}]},"22":{"type":"branch","line":221,"loc":{"start":{"line":221,"column":39},"end":{"line":229,"column":11}},"locations":[{"start":{"line":221,"column":39},"end":{"line":229,"column":11}}]},"23":{"type":"branch","line":229,"loc":{"start":{"line":229,"column":10},"end":{"line":230,"column":20}},"locations":[{"start":{"line":229,"column":10},"end":{"line":230,"column":20}}]},"24":{"type":"branch","line":219,"loc":{"start":{"line":219,"column":10},"end":{"line":219,"column":66}},"locations":[{"start":{"line":219,"column":10},"end":{"line":219,"column":66}}]},"25":{"type":"branch","line":246,"loc":{"start":{"line":246,"column":8},"end":{"line":246,"column":73}},"locations":[{"start":{"line":246,"column":8},"end":{"line":246,"column":73}}]}},"b":{"0":[8],"1":[1],"2":[7],"3":[18],"4":[6],"5":[3],"6":[3],"7":[13],"8":[1],"9":[1],"10":[539],"11":[13],"12":[526],"13":[2],"14":[6],"15":[3],"16":[6],"17":[6],"18":[6],"19":[4],"20":[2],"21":[145],"22":[99],"23":[46],"24":[1283],"25":[358]},"fnMap":{"0":{"name":"determineExtraPayment","decl":{"start":{"line":24,"column":7},"end":{"line":39,"column":1}},"loc":{"start":{"line":24,"column":7},"end":{"line":39,"column":1}},"line":24},"1":{"name":"determineCarryover","decl":{"start":{"line":51,"column":7},"end":{"line":63,"column":1}},"loc":{"start":{"line":51,"column":7},"end":{"line":63,"column":1}},"line":51},"2":{"name":"amortizePayments","decl":{"start":{"line":77,"column":7},"end":{"line":114,"column":1}},"loc":{"start":{"line":77,"column":7},"end":{"line":114,"column":1}},"line":77},"3":{"name":"payLoans","decl":{"start":{"line":126,"column":7},"end":{"line":263,"column":1}},"loc":{"start":{"line":126,"column":7},"end":{"line":263,"column":1}},"line":126}},"f":{"0":8,"1":6,"2":13,"3":2}}
8
8
  ,"/home/runner/work/moneyfunx/moneyfunx/src/lib/sorting.ts": {"path":"/home/runner/work/moneyfunx/moneyfunx/src/lib/sorting.ts","all":false,"statementMap":{"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":63}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":45}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":62}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":53}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":80}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}}},"s":{"18":1,"19":8,"20":8,"28":1,"29":5,"30":5,"38":1,"39":3,"40":3},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":7},"end":{"line":21,"column":1}},"locations":[{"start":{"line":19,"column":7},"end":{"line":21,"column":1}}]},"1":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":7},"end":{"line":31,"column":1}},"locations":[{"start":{"line":29,"column":7},"end":{"line":31,"column":1}}]},"2":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":7},"end":{"line":41,"column":1}},"locations":[{"start":{"line":39,"column":7},"end":{"line":41,"column":1}}]}},"b":{"0":[8],"1":[5],"2":[3]},"fnMap":{"0":{"name":"avalanche","decl":{"start":{"line":19,"column":7},"end":{"line":21,"column":1}},"loc":{"start":{"line":19,"column":7},"end":{"line":21,"column":1}},"line":19},"1":{"name":"snowball","decl":{"start":{"line":29,"column":7},"end":{"line":31,"column":1}},"loc":{"start":{"line":29,"column":7},"end":{"line":31,"column":1}},"line":29},"2":{"name":"sortLoans","decl":{"start":{"line":39,"column":7},"end":{"line":41,"column":1}},"loc":{"start":{"line":39,"column":7},"end":{"line":41,"column":1}},"line":39}},"f":{"0":8,"1":5,"2":3}}
9
9
  }
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2025-02-24T19:13:06.861Z
119
+ at 2025-02-24T19:37:19.149Z
120
120
  </div>
121
121
  <script src="prettify.js"></script>
122
122
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2025-02-24T19:13:06.861Z
104
+ at 2025-02-24T19:37:19.149Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -136,7 +136,7 @@ export { snowball, avalanche, sortLoans } from './lib/sorting';
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at 2025-02-24T19:13:06.861Z
139
+ at 2025-02-24T19:37:19.149Z
140
140
  </div>
141
141
  <script src="../prettify.js"></script>
142
142
  <script>
@@ -70,7 +70,7 @@
70
70
  <div class='footer quiet pad2 space-top1 center small'>
71
71
  Code coverage generated by
72
72
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
73
- at 2025-02-24T19:13:06.861Z
73
+ at 2025-02-24T19:37:19.149Z
74
74
  </div>
75
75
  <script src="../../prettify.js"></script>
76
76
  <script>
@@ -91,7 +91,7 @@
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
- at 2025-02-24T19:13:06.861Z
94
+ at 2025-02-24T19:37:19.149Z
95
95
  </div>
96
96
  <script src="../../prettify.js"></script>
97
97
  <script>
@@ -331,7 +331,7 @@ export function numPaymentsToZero(
331
331
  <div class='footer quiet pad2 space-top1 center small'>
332
332
  Code coverage generated by
333
333
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
334
- at 2025-02-24T19:13:06.861Z
334
+ at 2025-02-24T19:37:19.149Z
335
335
  </div>
336
336
  <script src="../../prettify.js"></script>
337
337
  <script>
@@ -191,7 +191,7 @@
191
191
  <div class='footer quiet pad2 space-top1 center small'>
192
192
  Code coverage generated by
193
193
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
194
- at 2025-02-24T19:13:06.861Z
194
+ at 2025-02-24T19:37:19.149Z
195
195
  </div>
196
196
  <script src="../../prettify.js"></script>
197
197
  <script>
@@ -352,8 +352,8 @@
352
352
  <span class="cline-any cline-neutral">&nbsp;</span>
353
353
  <span class="cline-any cline-neutral">&nbsp;</span>
354
354
  <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">547x</span>
356
- <span class="cline-any cline-yes">547x</span>
355
+ <span class="cline-any cline-yes">546x</span>
356
+ <span class="cline-any cline-yes">546x</span>
357
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
358
  <span class="cline-any cline-neutral">&nbsp;</span>
359
359
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -604,7 +604,7 @@ export class Loan implements ILoan {
604
604
  <div class='footer quiet pad2 space-top1 center small'>
605
605
  Code coverage generated by
606
606
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
607
- at 2025-02-24T19:13:06.861Z
607
+ at 2025-02-24T19:37:19.149Z
608
608
  </div>
609
609
  <script src="../../prettify.js"></script>
610
610
  <script>
@@ -118,7 +118,7 @@ export type LoanPrincipals = Record&lt;string, number&gt;;
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
121
- at 2025-02-24T19:13:06.861Z
121
+ at 2025-02-24T19:37:19.149Z
122
122
  </div>
123
123
  <script src="../../prettify.js"></script>
124
124
  <script>
@@ -326,8 +326,7 @@
326
326
  <a name='L261'></a><a href='#L261'>261</a>
327
327
  <a name='L262'></a><a href='#L262'>262</a>
328
328
  <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
329
+ <a name='L264'></a><a href='#L264'>264</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
331
330
  <span class="cline-any cline-neutral">&nbsp;</span>
332
331
  <span class="cline-any cline-neutral">&nbsp;</span>
333
332
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -424,21 +423,21 @@
424
423
  <span class="cline-any cline-neutral">&nbsp;</span>
425
424
  <span class="cline-any cline-yes">13x</span>
426
425
  <span class="cline-any cline-yes">13x</span>
427
- <span class="cline-any cline-yes">540x</span>
428
- <span class="cline-any cline-yes">540x</span>
429
- <span class="cline-any cline-yes">540x</span>
426
+ <span class="cline-any cline-yes">539x</span>
427
+ <span class="cline-any cline-yes">539x</span>
428
+ <span class="cline-any cline-yes">539x</span>
430
429
  <span class="cline-any cline-yes">13x</span>
431
- <span class="cline-any cline-yes">540x</span>
432
- <span class="cline-any cline-yes">540x</span>
433
- <span class="cline-any cline-yes">540x</span>
434
- <span class="cline-any cline-yes">540x</span>
435
- <span class="cline-any cline-yes">540x</span>
436
- <span class="cline-any cline-yes">540x</span>
437
- <span class="cline-any cline-yes">540x</span>
438
- <span class="cline-any cline-yes">540x</span>
439
- <span class="cline-any cline-yes">540x</span>
440
- <span class="cline-any cline-yes">540x</span>
441
- <span class="cline-any cline-yes">540x</span>
430
+ <span class="cline-any cline-yes">539x</span>
431
+ <span class="cline-any cline-yes">539x</span>
432
+ <span class="cline-any cline-yes">539x</span>
433
+ <span class="cline-any cline-yes">539x</span>
434
+ <span class="cline-any cline-yes">539x</span>
435
+ <span class="cline-any cline-yes">539x</span>
436
+ <span class="cline-any cline-yes">539x</span>
437
+ <span class="cline-any cline-yes">539x</span>
438
+ <span class="cline-any cline-yes">539x</span>
439
+ <span class="cline-any cline-yes">539x</span>
440
+ <span class="cline-any cline-yes">539x</span>
442
441
  <span class="cline-any cline-yes">13x</span>
443
442
  <span class="cline-any cline-yes">13x</span>
444
443
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -504,7 +503,6 @@
504
503
  <span class="cline-any cline-yes">6x</span>
505
504
  <span class="cline-any cline-yes">6x</span>
506
505
  <span class="cline-any cline-yes">6x</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
506
  <span class="cline-any cline-yes">6x</span>
509
507
  <span class="cline-any cline-yes">6x</span>
510
508
  <span class="cline-any cline-yes">6x</span>
@@ -545,18 +543,18 @@
545
543
  <span class="cline-any cline-yes">6x</span>
546
544
  <span class="cline-any cline-neutral">&nbsp;</span>
547
545
  <span class="cline-any cline-yes">6x</span>
548
- <span class="cline-any cline-yes">146x</span>
549
- <span class="cline-any cline-yes">146x</span>
550
- <span class="cline-any cline-yes">146x</span>
551
- <span class="cline-any cline-yes">146x</span>
552
- <span class="cline-any cline-yes">100x</span>
553
- <span class="cline-any cline-yes">100x</span>
554
- <span class="cline-any cline-yes">100x</span>
555
- <span class="cline-any cline-yes">100x</span>
556
- <span class="cline-any cline-yes">100x</span>
557
- <span class="cline-any cline-yes">100x</span>
558
- <span class="cline-any cline-yes">100x</span>
559
- <span class="cline-any cline-yes">100x</span>
546
+ <span class="cline-any cline-yes">145x</span>
547
+ <span class="cline-any cline-yes">145x</span>
548
+ <span class="cline-any cline-yes">145x</span>
549
+ <span class="cline-any cline-yes">145x</span>
550
+ <span class="cline-any cline-yes">99x</span>
551
+ <span class="cline-any cline-yes">99x</span>
552
+ <span class="cline-any cline-yes">99x</span>
553
+ <span class="cline-any cline-yes">99x</span>
554
+ <span class="cline-any cline-yes">99x</span>
555
+ <span class="cline-any cline-yes">99x</span>
556
+ <span class="cline-any cline-yes">99x</span>
557
+ <span class="cline-any cline-yes">99x</span>
560
558
  <span class="cline-any cline-yes">46x</span>
561
559
  <span class="cline-any cline-yes">6x</span>
562
560
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -637,21 +635,21 @@ export function determineExtraPayment(
637
635
  *
638
636
  * @param {Loan} loan The loan serving as the base for carryover
639
637
  * @param {number} loanPayment The payment applied to the loan
640
- * @param {number} loanCarryover The amount of balance remaining on the loan after N-1 of N required payments of loanPayment to zero the balance of the Loan
638
+ * @param {number} loanFinalPayment The (partial) amount of the final payment to the loan
641
639
  * @param {boolean} reduceMinimum Flag to reduce the total payment amount by a loan's minimum when that loan is paid off
642
640
  * @returns {number} The carryover to apply to the last payment on loan N+1
643
641
  */
644
642
  export function determineCarryover(
645
643
  loan: Loan,
646
644
  loanPayment: number,
647
- loanCarryover: number,
645
+ loanFinalPayment: number,
648
646
  reduceMinimum: boolean,
649
647
  ): number {
650
648
  switch (true) {
651
649
  case reduceMinimum:
652
- return Math.max(loanPayment - loanCarryover - loan.minPayment, 0);
653
- default:
654
- return Math.max(loanPayment - loanCarryover, 0);
650
+ return Math.max(loanPayment - loan.minPayment - loanFinalPayment, 0);
651
+ default:
652
+ return Math.max(loanPayment - loanFinalPayment, 0);
655
653
  }
656
654
  }
657
655
  &nbsp;
@@ -756,7 +754,7 @@ export function payLoans(
756
754
  periodsToPay,
757
755
  periodsElapsed
758
756
  );
759
- const naiveFirstLoanCarryover = firstLoanPayment - (
757
+ const firstLoanFinalPayment =
760
758
  firstLoan.principalRemaining(
761
759
  periodsToPay - 1,
762
760
  firstLoanPayment,
@@ -767,7 +765,6 @@ export function payLoans(
767
765
  firstLoanPayment,
768
766
  firstLoanPrincipalRemaining
769
767
  )
770
- )
771
768
  );
772
769
  paymentSchedule[firstLoan.id].amortizationSchedule = [
773
770
  ...paymentSchedule[firstLoan.id].amortizationSchedule,
@@ -799,7 +796,7 @@ export function payLoans(
799
796
  (index === 0 ? determineCarryover(
800
797
  firstLoan,
801
798
  firstLoanPayment,
802
- naiveFirstLoanCarryover,
799
+ firstLoanFinalPayment,
803
800
  reduceMinimum,
804
801
  ) : 0)
805
802
  );
@@ -862,7 +859,7 @@ export function payLoans(
862
859
  <div class='footer quiet pad2 space-top1 center small'>
863
860
  Code coverage generated by
864
861
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
865
- at 2025-02-24T19:13:06.861Z
862
+ at 2025-02-24T19:37:19.149Z
866
863
  </div>
867
864
  <script src="../../prettify.js"></script>
868
865
  <script>
@@ -193,7 +193,7 @@ export function sortLoans(loans: ILoan[], sortFunction: sortFunction): ILoan[] {
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at 2025-02-24T19:13:06.861Z
196
+ at 2025-02-24T19:37:19.149Z
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "moneyfunx",
3
3
  "type": "module",
4
- "version": "1.3.0",
4
+ "version": "1.3.2",
5
5
  "description": "MoneyFunx is a small library of functions for financial computations, with a focus on personal finance",
6
6
  "main": "build/index.js",
7
7
  "types": "build/index.d.ts",
@@ -44,21 +44,21 @@ export function determineExtraPayment(
44
44
  *
45
45
  * @param {Loan} loan The loan serving as the base for carryover
46
46
  * @param {number} loanPayment The payment applied to the loan
47
- * @param {number} loanCarryover The amount of balance remaining on the loan after N-1 of N required payments of loanPayment to zero the balance of the Loan
47
+ * @param {number} loanFinalPayment The (partial) amount of the final payment to the loan
48
48
  * @param {boolean} reduceMinimum Flag to reduce the total payment amount by a loan's minimum when that loan is paid off
49
49
  * @returns {number} The carryover to apply to the last payment on loan N+1
50
50
  */
51
51
  export function determineCarryover(
52
52
  loan: Loan,
53
53
  loanPayment: number,
54
- loanCarryover: number,
54
+ loanFinalPayment: number,
55
55
  reduceMinimum: boolean,
56
56
  ): number {
57
57
  switch (true) {
58
58
  case reduceMinimum:
59
- return Math.max(loanPayment - loanCarryover - loan.minPayment, 0);
60
- default:
61
- return Math.max(loanPayment - loanCarryover, 0);
59
+ return Math.max(loanPayment - loan.minPayment - loanFinalPayment, 0);
60
+ default:
61
+ return Math.max(loanPayment - loanFinalPayment, 0);
62
62
  }
63
63
  }
64
64
 
@@ -163,7 +163,7 @@ export function payLoans(
163
163
  periodsToPay,
164
164
  periodsElapsed
165
165
  );
166
- const naiveFirstLoanCarryover = firstLoanPayment - (
166
+ const firstLoanFinalPayment =
167
167
  firstLoan.principalRemaining(
168
168
  periodsToPay - 1,
169
169
  firstLoanPayment,
@@ -174,7 +174,6 @@ export function payLoans(
174
174
  firstLoanPayment,
175
175
  firstLoanPrincipalRemaining
176
176
  )
177
- )
178
177
  );
179
178
  paymentSchedule[firstLoan.id].amortizationSchedule = [
180
179
  ...paymentSchedule[firstLoan.id].amortizationSchedule,
@@ -206,7 +205,7 @@ export function payLoans(
206
205
  (index === 0 ? determineCarryover(
207
206
  firstLoan,
208
207
  firstLoanPayment,
209
- naiveFirstLoanCarryover,
208
+ firstLoanFinalPayment,
210
209
  reduceMinimum,
211
210
  ) : 0)
212
211
  );