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
64 lines (63 loc) • 2.19 kB
JavaScript
;
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;
}
}