Files
calendar/packages/features/ee/billing/di/modules/TeamBillingServiceFactory.ts
T
sean-brydonGitHubunknown <>Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
f4abbb2de1 feat: refactor billing to strategy implemention (#27828)
* factory and statergie

* chore: use correct method of DI

* feat: add onchagne

* add logic to HWM stat

* add webhook resolver methods to each statergy

* move seat tracking + webhooks over to own statergy

* Move to factory base approach

* move logic to correct class

* rename create -> createByTeamId

* fix: remove debug `true ||` overrides from IS_STRIPE_ENABLED and IS_TEAM_BILLING_ENABLED

Remove accidentally committed debug overrides that short-circuited
IS_STRIPE_ENABLED and IS_TEAM_BILLING_ENABLED to always be true,
bypassing Stripe credential checks. This would break self-hosted
instances without Stripe configured.

Identified by cubic (https://cubic.dev)

Co-Authored-By: unknown <>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-02-10 13:11:36 -03:00

31 lines
1.4 KiB
TypeScript

import { bindModuleToClassOnToken, createModule, type ModuleLoader } from "@calcom/features/di/di";
import { TeamBillingServiceFactory } from "../../service/teams/TeamBillingServiceFactory";
import { DI_TOKENS } from "../tokens";
import { billingProviderServiceModuleLoader } from "./BillingProviderService";
import { billingRepositoryFactoryModuleLoader } from "./BillingRepositoryFactory";
import { isTeamBillingEnabledModuleLoader } from "./IsTeamBillingEnabled";
import { seatBillingStrategyFactoryModuleLoader } from "./SeatBillingStrategyFactory.module";
import { teamBillingDataRepositoryModuleLoader } from "./TeamBillingDataRepositoryFactory";
const teamBillingServiceFactoryModule = createModule();
const token = DI_TOKENS.TEAM_BILLING_SERVICE_FACTORY;
const moduleToken = DI_TOKENS.TEAM_BILLING_SERVICE_FACTORY_MODULE;
const loadModule = bindModuleToClassOnToken({
module: teamBillingServiceFactoryModule,
moduleToken,
token,
classs: TeamBillingServiceFactory,
depsMap: {
billingProviderService: billingProviderServiceModuleLoader,
teamBillingDataRepository: teamBillingDataRepositoryModuleLoader,
billingRepositoryFactory: billingRepositoryFactoryModuleLoader,
isTeamBillingEnabled: isTeamBillingEnabledModuleLoader,
seatBillingStrategyFactory: seatBillingStrategyFactoryModuleLoader,
},
});
export const teamBillingServiceFactoryModuleLoader: ModuleLoader = {
token: DI_TOKENS.TEAM_BILLING_SERVICE_FACTORY,
loadModule,
};