autumn-js
Version:
Autumn JS Library
58 lines (55 loc) • 1.35 kB
JavaScript
"use client";
// src/react/hooks/internal/check/balanceToAllowed.ts
var getAvailableOverage = ({
balance
}) => {
const breakdown = balance.breakdown ?? [];
const usageBasedBreakdown = breakdown.filter(
(item) => item.price?.billingMethod === "usage_based"
);
if (usageBasedBreakdown.length === 0) {
return balance.maxPurchase ?? void 0;
}
let maxOverage = 0;
let overageUsage = 0;
for (const item of usageBasedBreakdown) {
if (item.price?.maxPurchase === null) {
return void 0;
}
if (item.price?.maxPurchase !== void 0) {
maxOverage += item.price.maxPurchase;
}
const overage = Math.max(
0,
item.usage - item.includedGrant - item.prepaidGrant
);
overageUsage += overage;
}
return Math.max(0, maxOverage - overageUsage);
};
var balanceToAllowed = ({
balance,
feature,
requiredBalance
}) => {
if (feature.type === "boolean") {
return true;
}
if (balance.unlimited) {
return true;
}
if (requiredBalance < 0) {
return true;
}
if (balance.overageAllowed) {
const availableOverage = getAvailableOverage({ balance });
if (availableOverage === void 0) {
return true;
}
return balance.remaining + availableOverage >= requiredBalance;
}
return balance.remaining >= requiredBalance;
};
export {
balanceToAllowed
};