pricing4ts
Version:
 Pricing4TS is a TypeScript-based toolkit designed to enhance the server-side functionality of a pricing-driven SaaS by enabling the seamless integration of pricing plans into the application logic. T
55 lines (54 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPlanNames = getPlanNames;
exports.getPlanPrices = getPlanPrices;
exports.calculatePlanFeaturesMatrix = calculatePlanFeaturesMatrix;
exports.calculatePlanUsageLimitsMatrix = calculatePlanUsageLimitsMatrix;
var number_utils_1 = require("../../../server/utils/dzn-exporter/number-utils");
function getPlanNames(plans) {
if (!plans) {
return [];
}
return Object.values(plans).map(function (plan) { return plan.name; });
}
function getPlanPrices(plans) {
var prices = [];
if (!plans) {
return prices;
}
var planKeys = Object.keys(plans);
for (var i = 0; i < planKeys.length; i++) {
var price = plans[planKeys[i]].price;
if (typeof price === 'number') {
prices.push(price);
}
else if (typeof price === 'string') {
prices.push(10 * prices[i - 1]);
}
}
return prices;
}
function calculatePlanFeaturesMatrix(plans) {
var matrix = [];
for (var plan in plans) {
var planFeatures = plans[plan].features;
var row = (0, number_utils_1.calculateOverriddenRow)(planFeatures);
matrix.push(row);
}
return matrix;
}
function calculatePlanUsageLimitsMatrix(usageLimits, plans) {
var matrix = [];
if (Object.keys(usageLimits).length === 0) {
return matrix;
}
for (var plan in plans) {
var usageLimits_1 = plans[plan].usageLimits;
if (!usageLimits_1) {
continue;
}
var row = (0, number_utils_1.calculateOverriddenRow)(usageLimits_1);
matrix.push(row);
}
return matrix;
}