/** * @echelon-framework/mock-server — standalone Node mock backend z HTTP + WebSocket. * * HTTP: * - GET /health → "ok" * - GET /api/:resource → zwraca fixture z config.responses[resource] * • gdy fixture to tablica → obsługuje query params: * - `?q=text` — full-text filter (każde pole, case-insensitive) * - `?field=value` — per-field contains filter (AND między polami) * - `?_page=N&_pageSize=K` — paginacja slice'owa * - `?_sort=field&_order=asc|desc` — sortowanie po polu * - POST /api/:resource → echo + dopisuje do in-memory journal * * WebSocket (ws://host:port/ws): * - Client wysyła `{ subscribe: "channel.name" }` → dostaje strumień wiadomości * - Client wysyła `{ unsubscribe: "channel.name" }` → przestaje dostawać * - Server emituje wiadomości typu `{ channel, data, at }` dla każdego subskrybowanego kanału * * Symulatory emisji — te same `StreamSimulator` kind'y co w @echelon-framework/transport-mock * (fx-random-walk, sine, random-int). Deklarowane w configu. */ export interface StreamSimulator { readonly kind: string; readonly intervalMs?: number; readonly mid?: number; readonly vol?: number; readonly bounds?: readonly [number, number]; readonly jumpProbability?: number; readonly meanReversionTarget?: number; readonly precision?: number; readonly amplitude?: number; readonly periodMs?: number; readonly offset?: number; readonly min?: number; readonly max?: number; } export interface MockServerConfig { readonly port?: number; readonly host?: string; /** HTTP responses dla GET /api/:resource */ readonly responses?: Readonly>; /** WS streams emitted on subscribe */ readonly streams?: Readonly>; /** Opcjonalny logger (default: console). */ readonly log?: (level: 'info' | 'warn' | 'error', msg: string, ctx?: unknown) => void; } export declare class MockServer { private readonly config; private httpServer?; private wsServer?; private simulatorTimers; private simulatorState; private subscriptions; constructor(config: MockServerConfig); start(): Promise<{ port: number; host: string; }>; stop(): Promise; private broadcast; private startSimulator; } //# sourceMappingURL=index.d.ts.map