31 lines
1.4 KiB
TypeScript
31 lines
1.4 KiB
TypeScript
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<string, DependencyContainer> = {};
|
|
|
|
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;
|
|
}
|