UNPKG

@paultaku/node-mock-server

Version:

A TypeScript-based mock server with automatic Swagger-based mock file generation

91 lines 3.23 kB
/** * ScenarioManager Implementation * * High-level service for managing scenario CRUD operations. * Coordinates between ScenarioRepository, ActiveScenarioTracker, and ScenarioApplicator. * * @see specs/004-scenario-management/data-model.md * @see tests/unit/scenario-manager.test.ts */ import { Scenario, CreateScenarioRequest, UpdateScenarioRequest, ListScenariosResponse, IScenarioRepository, IActiveScenarioTracker } from '../../shared/types/scenario-types'; import { ScenarioApplicator } from './scenario-applicator'; /** * Service for managing scenario lifecycle * * Responsibilities: * - Create, update, delete, list, and get scenarios * - Auto-generate scenario metadata (timestamps, version) * - Apply scenarios to endpoint status.json files * - Track active scenario * - Validate business rules (duplicates, empty scenarios) */ export declare class ScenarioManager { private readonly repository; private readonly tracker; private readonly applicator; constructor(repository: IScenarioRepository, tracker: IActiveScenarioTracker, applicator: ScenarioApplicator); /** * Create a new scenario * * Steps: * 1. Validate request (empty, duplicates) * 2. Generate metadata * 3. Save to repository * * Note: Scenario is NOT automatically applied. Use activate endpoint to apply. * * @throws DuplicateScenarioError if scenario name already exists * @throws EmptyScenarioError if no endpoint configurations * @throws DuplicateEndpointError if duplicate endpoints in request */ create(request: CreateScenarioRequest): Promise<Scenario>; /** * Update an existing scenario * * Steps: * 1. Validate request (empty, duplicates) * 2. Load existing scenario * 3. Update endpoint configurations and metadata * 4. Save to repository * * Note: Scenario is NOT automatically applied. Use activate endpoint to apply. * * @throws ScenarioNotFoundError if scenario doesn't exist * @throws EmptyScenarioError if no endpoint configurations * @throws DuplicateEndpointError if duplicate endpoints in request */ update(name: string, request: UpdateScenarioRequest): Promise<Scenario>; /** * Delete a scenario * * Steps: * 1. Check if scenario exists * 2. Delete from repository * 3. Clear active scenario if it was the deleted one * * @throws ScenarioNotFoundError if scenario doesn't exist */ delete(name: string): Promise<void>; /** * List all scenarios with active scenario indicator * * @returns List of all scenarios and the name of the active scenario */ list(): Promise<ListScenariosResponse>; /** * Get a scenario by name * * @throws ScenarioNotFoundError if scenario doesn't exist */ get(name: string): Promise<Scenario>; /** * Validate that there are no duplicate endpoints in the configuration array * * Uses Map-based lookup for O(n) performance. * * @throws DuplicateEndpointError if duplicates found * @private */ private validateNoDuplicateEndpoints; } //# sourceMappingURL=scenario-manager.d.ts.map