Files

24 lines
1.5 KiB
TypeScript

import type { MenuRepository } from '@/domain/menu/repository';
import type { CartRepository } from '@/domain/cart/repository';
import type { WishlistRepository } from '@/domain/wishlist/repository';
import type { LanguageRepository } from '@/domain/language/repository';
import type { MessagingGateway } from '@/application/messaging/ports';
import { StaticMenuRepository } from '@/infrastructure/menu/static-menu-repository';
import { LocalStorageCartRepository } from '@/infrastructure/persistence/local-storage-cart-repository';
import { LocalStorageWishlistRepository } from '@/infrastructure/persistence/local-storage-wishlist-repository';
import { LocalStorageLanguageRepository } from '@/infrastructure/persistence/local-storage-language-repository';
import { BrowserWhatsAppGateway } from '@/infrastructure/messaging/browser-whatsapp-gateway';
/**
* Composition root — wires domain ports to infrastructure adapters.
* Presentation layer imports from here instead of concrete implementations.
*/
class AppContainer {
readonly menuRepository: MenuRepository = new StaticMenuRepository();
readonly cartRepository: CartRepository = new LocalStorageCartRepository();
readonly wishlistRepository: WishlistRepository = new LocalStorageWishlistRepository();
readonly languageRepository: LanguageRepository = new LocalStorageLanguageRepository();
readonly messagingGateway: MessagingGateway = new BrowserWhatsAppGateway();
}
export const container = new AppContainer();