UNPKG

autumn-js

Version:

Autumn JS Library

91 lines (88 loc) 2.8 kB
"use client"; "use strict"; 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 });