import getCustomerInvoiceDi from "@/feature/core/customer-invoice/data/module/customer-invoice.di"; import { customerInvoiceModuleKey } from "@/feature/core/customer-invoice/invoice.module-key"; import { customerKey } from "@/feature/core/customer/customer-key"; import getCustomerDi from "@/feature/core/customer/data/module/customer-di"; import getInvoiceDi from "@/feature/core/invoice/data/module/invoice.di"; import { invoiceModuleKey } from "@/feature/core/invoice/invoice.module-key"; import { DependencyContainer } from "tsyringe"; import { summaryInfoModuleKey } from "@/feature/core/summary-info/domain/summary-info.module-key"; import getSummaryInfoDi from "@/feature/core/summary-info/data/module/summary-info.di"; import { revenueModuleKey } from "@/feature/core/revenue/domain/revenue.module-key"; import getRevenueDi from "@/feature/core/revenue/data/module/revenue.di"; const memoizedDis: Record = {}; export default function serverDi(module: string): DependencyContainer { if (memoizedDis[module]) return memoizedDis[module]; const getDi = { [customerKey]: getCustomerDi, [customerInvoiceModuleKey]: getCustomerInvoiceDi, [invoiceModuleKey]: getInvoiceDi, [summaryInfoModuleKey]: getSummaryInfoDi, [revenueModuleKey]: getRevenueDi, }[module]; if (!getDi) throw new Error(`Server Di didn't found for module: ${module}`); const di = getDi(); memoizedDis[module] = di; return di; }