UNPKG

pricing4ts

Version:

![NPM Version](https://img.shields.io/npm/v/pricing4ts) 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

156 lines (155 loc) 5.88 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAddOnNames = getAddOnNames; exports.getAddOnPrices = getAddOnPrices; exports.calculateAddOnsFeaturesMatrix = calculateAddOnsFeaturesMatrix; exports.calculateAddOnsUsageLimitsMatrix = calculateAddOnsUsageLimitsMatrix; exports.calculateAddOnsUsageLimitsExtensionsMatrix = calculateAddOnsUsageLimitsExtensionsMatrix; exports.calculateAddOnAvailableForMatrix = calculateAddOnAvailableForMatrix; exports.calculateAddOnsDependsOnOExcludesMatrix = calculateAddOnsDependsOnOExcludesMatrix; var number_utils_1 = require("../../../server/utils/dzn-exporter/number-utils"); function getAddOnNames(addOns) { if (!addOns) { return []; } return Object.values(addOns).map(function (addOn) { return addOn.name; }); } function getAddOnPrices(addOns) { var prices = []; if (!addOns) { return prices; } for (var _i = 0, _a = Object.values(addOns); _i < _a.length; _i++) { var addOn = _a[_i]; var price = addOn.price; if (typeof price === 'number') { prices.push(price); } else if (typeof price === 'string') { prices.push(100); } } return prices; } function calculateAddOnsFeaturesMatrix(features, addOns) { var matrix = []; for (var _i = 0, _a = Object.values(addOns); _i < _a.length; _i++) { var addOn = _a[_i]; var addOnFeatures = addOn.features; if (!addOnFeatures) { matrix.push(new Array(Object.values(features).length).fill(0)); continue; } var row = []; for (var _b = 0, _c = Object.values(features); _b < _c.length; _b++) { var feature = _c[_b]; var value = 0; var overriddenValue = addOnFeatures[feature.name] ? (0, number_utils_1.calculateOverriddenValue)(__assign(__assign({}, addOnFeatures[feature.name]), { valueType: feature.valueType })) : undefined; if (overriddenValue) { value = 1; } row.push(value); } matrix.push(row); } return matrix; } function calculateAddOnsUsageLimitsMatrix(usageLimits, addOns) { var matrix = []; if (Object.keys(usageLimits).length === 0) { return matrix; } for (var _i = 0, _a = Object.values(addOns); _i < _a.length; _i++) { var addOn = _a[_i]; var addOnUsageLimits = addOn.usageLimits || {}; var numberOfOverriddenAddOns = Object.keys(addOnUsageLimits).length; if (numberOfOverriddenAddOns === 0) { matrix.push(new Array(Object.keys(usageLimits).length).fill(0)); continue; } var row = []; for (var _b = 0, _c = Object.values(usageLimits); _b < _c.length; _b++) { var usageLimit = _c[_b]; var value = addOnUsageLimits[usageLimit.name] ? (0, number_utils_1.calculateOverriddenValue)(__assign(__assign({}, addOnUsageLimits[usageLimit.name]), { valueType: usageLimit.valueType })) : 0; row.push(value); } matrix.push(row); } return matrix; } function calculateAddOnsUsageLimitsExtensionsMatrix(usageLimits, addOns) { var matrix = []; if (Object.keys(usageLimits).length === 0) { return matrix; } for (var _i = 0, _a = Object.values(addOns); _i < _a.length; _i++) { var addOn = _a[_i]; var addOnUsageLimits = addOn.usageLimitsExtensions || {}; var numberOfOverriddenAddOns = Object.keys(addOnUsageLimits).length; if (numberOfOverriddenAddOns === 0) { matrix.push(new Array(Object.keys(usageLimits).length).fill(0)); continue; } var row = []; for (var _b = 0, _c = Object.values(usageLimits); _b < _c.length; _b++) { var usageLimit = _c[_b]; var value = addOnUsageLimits[usageLimit.name] ? (0, number_utils_1.valueToNumber)(addOnUsageLimits[usageLimit.name].value) : 0; row.push(value); } matrix.push(row); } return matrix; } function calculateAddOnAvailableForMatrix(planNames, addOns) { var matrix = []; if (!addOns || planNames.length === 0) { return matrix; } for (var _i = 0, _a = Object.values(addOns); _i < _a.length; _i++) { var addOn = _a[_i]; var row = []; for (var _b = 0, planNames_1 = planNames; _b < planNames_1.length; _b++) { var planName = planNames_1[_b]; var value = addOn.availableFor.includes(planName) ? 1 : 0; row.push(value); } matrix.push(row); } return matrix; } function calculateAddOnsDependsOnOExcludesMatrix(addOns, field) { if (field === void 0) { field = "dependsOn"; } var matrix = []; if (!addOns) { return matrix; } for (var _i = 0, _a = Object.values(addOns); _i < _a.length; _i++) { var addOn = _a[_i]; var selectedField = field === "dependsOn" ? addOn.dependsOn : addOn.excludes; var row = []; if (!selectedField) { row.push(new Array(Object.values(addOns).length).fill(0)); continue; } for (var _b = 0, _c = Object.values(addOns); _b < _c.length; _b++) { var innerAddOn = _c[_b]; var value = selectedField.includes(innerAddOn.name) ? 1 : 0; row.push(value); } matrix.push(row); } return matrix; }