UNPKG

@swoft/platform-contracts

Version:

DDD-compliant dependency injection contracts for Swoft platform - Defines clean architecture boundaries

82 lines (68 loc) 3.16 kB
/** * Application Layer Contracts * * Defines dependency injection symbols for application concerns. * These orchestrate domain logic and coordinate between bounded contexts. */ // ============================================ // APPLICATION SERVICE CONTRACTS // ============================================ /** * Application services that orchestrate domain logic * These coordinate multiple domain services and repositories */ export const APPLICATION_CONTRACTS = { // Core application services CAS_SERVICE: Symbol('Application.Service.CasService'), CONTRACT_DISCOVERY_SERVICE: Symbol('Application.Service.ContractDiscoveryService'), SCHEMA_APPLICATION_SERVICE: Symbol('Application.Service.SchemaApplicationService'), // Knowledge application services DOCUMENTATION_APPLICATION_SERVICE: Symbol('Application.Service.DocumentationApplicationService'), // Runtime application services SERVICE_MANAGER: Symbol('Application.Service.ServiceManager'), SERVICE_REGISTRY: Symbol('Application.Service.ServiceRegistry'), TASK_ORCHESTRATOR: Symbol('Application.Service.TaskOrchestrator'), // Development application services SEEDER_MANAGER: Symbol('Application.Service.SeederManager'), VALIDATION_SERVICE: Symbol('Application.Service.ValidationService'), } as const; // ============================================ // COMMAND & QUERY BUS CONTRACTS // ============================================ /** * CQRS infrastructure contracts * Command and Query buses for cross-bounded-context communication */ export const CQRS_CONTRACTS = { // Command processing COMMAND_BUS: Symbol('Application.CQRS.CommandBus'), COMMAND_HANDLER_REGISTRY: Symbol('Application.CQRS.CommandHandlerRegistry'), // Query processing QUERY_BUS: Symbol('Application.CQRS.QueryBus'), QUERY_HANDLER_REGISTRY: Symbol('Application.CQRS.QueryHandlerRegistry'), // Event processing EVENT_BUS: Symbol('Application.CQRS.EventBus'), EVENT_HANDLER_REGISTRY: Symbol('Application.CQRS.EventHandlerRegistry'), } as const; // ============================================ // USE CASE CONTRACTS // ============================================ /** * Use case contracts for specific business operations * These represent specific user intentions/stories */ export const USE_CASE_CONTRACTS = { // Service management use cases START_SERVICE_USE_CASE: Symbol('Application.UseCase.StartService'), STOP_SERVICE_USE_CASE: Symbol('Application.UseCase.StopService'), LIST_SERVICES_USE_CASE: Symbol('Application.UseCase.ListServices'), // Documentation use cases CREATE_DOCUMENTATION_USE_CASE: Symbol('Application.UseCase.CreateDocumentation'), UPDATE_DOCUMENTATION_USE_CASE: Symbol('Application.UseCase.UpdateDocumentation'), PUBLISH_DOCUMENTATION_USE_CASE: Symbol('Application.UseCase.PublishDocumentation'), } as const; // Type-safe access to application contracts export type ApplicationContract = (typeof APPLICATION_CONTRACTS)[keyof typeof APPLICATION_CONTRACTS]; export type CQRSContract = (typeof CQRS_CONTRACTS)[keyof typeof CQRS_CONTRACTS]; export type UseCaseContract = (typeof USE_CASE_CONTRACTS)[keyof typeof USE_CASE_CONTRACTS];