24 lines
1.5 KiB
TypeScript
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(); |