autumn-js
Version:
Autumn JS Library
91 lines (88 loc) • 2.8 kB
JavaScript
"use client";
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/libraries/react/hooks/handleAllowed.ts
var handleAllowed_exports = {};
__export(handleAllowed_exports, {
handleAllowed: () => handleAllowed
});
module.exports = __toCommonJS(handleAllowed_exports);
var getCusFeature = ({
customer,
featureId,
requiredBalance = 1
}) => {
let creditSchema = Object.values(customer.features).find(
(f) => f.credit_schema && f.credit_schema.some((c) => c.feature_id === featureId)
);
if (creditSchema) {
let schemaItem = creditSchema.credit_schema?.find(
(c) => c.feature_id === featureId
);
return {
feature: creditSchema,
requiredBalance: schemaItem.credit_amount * requiredBalance
};
}
return {
cusFeature: customer.features[featureId],
requiredBalance
};
};
var handleFeatureAllowed = ({
customer,
params
}) => {
let { cusFeature, requiredBalance } = getCusFeature({
customer,
featureId: params.featureId
});
if (!cusFeature) return false;
if (cusFeature.type == "static") return true;
if (cusFeature.unlimited || cusFeature.overage_allowed) return true;
if (cusFeature.usage_limit) {
let extraUsage = (cusFeature.usage_limit || 0) - (cusFeature.included_usage || 0);
return (cusFeature.balance || 0) + extraUsage >= requiredBalance;
}
return (cusFeature.balance || 0) >= requiredBalance;
};
var handleAllowed = ({
customer,
params
}) => {
if (!customer) return false;
if (!params.featureId && !params.productId) {
throw new Error("allowed() requires either featureId or productId");
}
if (params.featureId) {
return handleFeatureAllowed({ customer, params });
}
if (params.productId) {
let product = customer.products.find((p) => p.id == params.productId);
if (!product) return false;
let status = product.status;
if (status == "scheduled") return false;
return true;
}
return false;
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
handleAllowed
});