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

64 lines (63 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isUsagelimit = isUsagelimit; exports.calculateOverriddenRow = calculateOverriddenRow; exports.calculateOverriddenValue = calculateOverriddenValue; exports.valueToNumber = valueToNumber; var unlimitedValue = 100000000; function isUsagelimit(item) { var usageLimitTypes = ['non_renewable', 'renewable', 'time_driven', 'response_driven']; return usageLimitTypes.includes(item.type.toLowerCase()); } function calculateOverriddenRow(items) { var values = []; for (var _i = 0, _a = Object.values(items); _i < _a.length; _i++) { var item = _a[_i]; values.push(calculateOverriddenValue(item)); } return values; } function calculateOverriddenValue(item) { var defaultValue = 0; var value; if (item.valueType === 'NUMERIC' && item.value !== undefined && item.value !== null) { value = item.value > unlimitedValue ? unlimitedValue : item.value; } else if (item.valueType === 'NUMERIC' && item.defaultValue !== undefined && item.defaultValue !== null) { value = item.defaultValue > unlimitedValue ? unlimitedValue : item.defaultValue; } else if (item.valueType === 'BOOLEAN' && item.value !== undefined && item.value !== null) { value = item.value ? 1 : 0; } else if (item.valueType === 'BOOLEAN' && item.defaultValue !== undefined && item.defaultValue !== null) { value = item.defaultValue ? 1 : 0; } else if (item.valueType === 'TEXT' && item.value) { value = item.value.toString().length > 0 ? 1 : 0; } else if (item.valueType === 'TEXT' && item.defaultValue) { value = item.defaultValue.toString().length > 0 ? 1 : 0; } else { value = defaultValue; } return value; } function valueToNumber(value) { switch (typeof value) { case 'boolean': return value ? 1 : 0; case 'number': return value === Infinity ? 1000000000 : value; case 'object': case 'string': return 1; case 'undefined': return 0; } }