/** * WebSocket Convention Resolver * * Infers WebSocket event configuration from folder structure * * Folder structure rules: * ws/ * └── chat/ * ├── @connect/ -> 'connect' event (connection) * ├── @disconnect/ -> 'disconnect' event (disconnection) * └── send/ * └── @message/ -> 'chat:send' event * * Event name conversion: * chat/@connect/ -> 'connect' * chat/@disconnect/ -> 'disconnect' * chat/send/@message/ -> 'chat:send' * room/join/@message/ -> 'room:join' */ import type { WsEventType } from './types'; /** * WebSocket Convention Resolver class */ export declare class WsConventionResolver { /** * Infer event type from folder name * * @param dirName - Folder name (e.g., '@connect', '@message') * @returns Event type or null * * @example * inferEventType('@connect') // -> 'connect' * inferEventType('@disconnect') // -> 'disconnect' * inferEventType('@message') // -> 'message' * inferEventType('chat') // -> null */ static inferEventType(dirName: string): WsEventType | null; /** * Check if folder is a WebSocket event folder * * @param dirName - Folder name * @returns Whether it is a WebSocket event folder */ static isWsEventFolder(dirName: string): boolean; /** * Infer event name from folder path * * @param dirPath - Feature directory path * @param wsBase - WebSocket features base directory * @returns Event name (e.g., 'chat:send') * * @example * inferEventName('/ws/chat/@connect', '/ws') * // -> 'connect' * * inferEventName('/ws/chat/send/@message', '/ws') * // -> 'chat:send' * * inferEventName('/ws/room/join/@message', '/ws') * // -> 'room:join' */ static inferEventName(dirPath: string, wsBase: string): string; /** * Find Steps folder path * * @param featureDir - Feature directory path * @returns Relative path to steps folder or null */ static findStepsDir(featureDir: string): string | null; /** * Find Async Tasks folder path * * @param featureDir - Feature directory path * @returns Relative path to async-tasks folder or null */ static findAsyncTasksDir(featureDir: string): string | null; /** * Resolve complete conventions * * @param featureDir - Feature directory path * @param wsBase - WebSocket features base directory * @returns Resolved configuration */ static resolveConventions(featureDir: string, wsBase: string): { eventName: string; eventType: WsEventType; steps: string | null; asyncTasks: string | null; }; } //# sourceMappingURL=convention.d.ts.map