UNPKG

@turnbuckle/aprs-calculator-services

Version:

Anchorpoint Risk Calculator Service.

36 lines (35 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createWeightedRecoveries = void 0; var date_and_time_module_1 = require("../../../common/date-and-time.module"); var sort_module_1 = require("../../../common/sort.module"); var hazard_rate_helper_module_1 = require("../../../common/hazard-rate-helper.module"); var create_aggregated_defaults_by_bucket_hashmap_1 = require("./create-aggregated-defaults-by-bucket-hashmap"); var sum_amount_before_date_1 = require("../../../common/sum-amount-before-date"); function createWeightedRecoveries(defaultsTable) { (0, sort_module_1.sortByDateAndThenBucket)(defaultsTable); if (defaultsTable.length > 0) { var lastDate = (0, date_and_time_module_1.getEndOfMonth)(defaultsTable[defaultsTable.length - 1].date); var maxTerms = (0, date_and_time_module_1.monthsBetweenDates)(defaultsTable[0].date, lastDate); var output = { buckets: (0, create_aggregated_defaults_by_bucket_hashmap_1.createAggregatedDefaultsByBucketHashmap)(defaultsTable), recoveries: (0, hazard_rate_helper_module_1.createNumberArray)(maxTerms), maxTerms: maxTerms, lastDate: lastDate, }; for (var i = 1; i < maxTerms; i++) { var endDate = (0, date_and_time_module_1.getEndOfMonth)(lastDate, -i); var currentBucketTotal = (0, sum_amount_before_date_1.sumAmountBeforeDate)(output.buckets[i.toString()], endDate); var previousBucketTotal = (0, sum_amount_before_date_1.sumAmountBeforeDate)(output.buckets[(i - 1).toString()], endDate); output.recoveries[i] = previousBucketTotal - currentBucketTotal; } return output; } else { return { buckets: {}, recoveries: [], }; } } exports.createWeightedRecoveries = createWeightedRecoveries;