@swoft/platform-contracts
Version:
DDD-compliant dependency injection contracts for Swoft platform - Defines clean architecture boundaries
82 lines (68 loc) • 3.16 kB
text/typescript
/**
* 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];