@speckle/shared
Version:
Shared code between various Speckle JS packages
109 lines • 3.23 kB
JavaScript
import { throwUncoveredError } from '../../core/helpers/error.js';
export const PaidWorkspacePlans = {
Team: 'team', // actually 'Starter'
TeamUnlimited: 'teamUnlimited',
Pro: 'pro', // actually 'Business'
ProUnlimited: 'proUnlimited'
};
export const UnpaidWorkspacePlans = {
TeamUnlimitedInvoiced: 'teamUnlimitedInvoiced',
ProUnlimitedInvoiced: 'proUnlimitedInvoiced',
Enterprise: 'enterprise',
Unlimited: 'unlimited',
Academia: 'academia',
Free: 'free'
};
export const WorkspacePlans = {
...PaidWorkspacePlans,
...UnpaidWorkspacePlans
};
export const doesPlanIncludeUnlimitedProjectsAddon = (plan) => {
switch (plan) {
case WorkspacePlans.TeamUnlimited:
case WorkspacePlans.ProUnlimited:
return true;
case WorkspacePlans.Free:
case WorkspacePlans.Team:
case WorkspacePlans.Pro:
case WorkspacePlans.TeamUnlimitedInvoiced:
case WorkspacePlans.ProUnlimitedInvoiced:
case WorkspacePlans.Unlimited:
case WorkspacePlans.Academia:
case WorkspacePlans.Enterprise:
return false;
default:
throwUncoveredError(plan);
}
};
export const isSelfServeAvailablePlan = (plan) => {
switch (plan) {
case WorkspacePlans.Free:
case WorkspacePlans.Team:
case WorkspacePlans.TeamUnlimited:
case WorkspacePlans.Pro:
case WorkspacePlans.ProUnlimited:
return true;
case WorkspacePlans.TeamUnlimitedInvoiced:
case WorkspacePlans.ProUnlimitedInvoiced:
case WorkspacePlans.Unlimited:
case WorkspacePlans.Academia:
case WorkspacePlans.Enterprise:
return false;
default:
throwUncoveredError(plan);
}
};
export const isPaidPlan = (plan) => {
switch (plan) {
case WorkspacePlans.Team:
case WorkspacePlans.TeamUnlimited:
case WorkspacePlans.Pro:
case WorkspacePlans.ProUnlimited:
return true;
case WorkspacePlans.Free:
case WorkspacePlans.TeamUnlimitedInvoiced:
case WorkspacePlans.ProUnlimitedInvoiced:
case WorkspacePlans.Unlimited:
case WorkspacePlans.Academia:
case WorkspacePlans.Enterprise:
return false;
default:
throwUncoveredError(plan);
}
};
/**
* BILLING INTERVALS
*/
export const WorkspacePlanBillingIntervals = {
Monthly: 'monthly',
Yearly: 'yearly'
};
/**
* PLAN STATUSES
*/
export const UnpaidWorkspacePlanStatuses = {
Valid: 'valid'
};
export const PaidWorkspacePlanStatuses = {
...UnpaidWorkspacePlanStatuses,
PaymentFailed: 'paymentFailed',
CancelationScheduled: 'cancelationScheduled',
Canceled: 'canceled'
};
export const WorkspacePlanStatuses = {
...PaidWorkspacePlanStatuses,
...UnpaidWorkspacePlanStatuses
};
export const isWorkspacePlanStatusReadOnly = (status) => {
switch (status) {
case 'cancelationScheduled':
case 'valid':
case 'paymentFailed':
return false;
case 'canceled':
return true;
default:
throwUncoveredError(status);
}
};
//# sourceMappingURL=plans.js.map