(
eventTypeOrHandler: K | SessionLifecycleHandler,
handler?: TypedSessionLifecycleHandler<K>
)
| 2136 | onLifecycle(handler: SessionLifecycleHandler): () => void; |
| 2137 | |
| 2138 | onLifecycle<K extends SessionLifecycleEventType>( |
| 2139 | eventTypeOrHandler: K | SessionLifecycleHandler, |
| 2140 | handler?: TypedSessionLifecycleHandler<K> |
| 2141 | ): () => void { |
| 2142 | // Overload 1: onLifecycle(eventType, handler) - typed event subscription |
| 2143 | if (typeof eventTypeOrHandler === "string" && handler) { |
| 2144 | const eventType = eventTypeOrHandler; |
| 2145 | if (!this.typedLifecycleHandlers.has(eventType)) { |
| 2146 | this.typedLifecycleHandlers.set(eventType, new Set()); |
| 2147 | } |
| 2148 | const storedHandler = handler as (event: SessionLifecycleEvent) => void; |
| 2149 | this.typedLifecycleHandlers.get(eventType)!.add(storedHandler); |
| 2150 | return () => { |
| 2151 | const handlers = this.typedLifecycleHandlers.get(eventType); |
| 2152 | if (handlers) { |
| 2153 | handlers.delete(storedHandler); |
| 2154 | } |
| 2155 | }; |
| 2156 | } |
| 2157 | |
| 2158 | // Overload 2: onLifecycle(handler) - wildcard subscription |
| 2159 | const wildcardHandler = eventTypeOrHandler as SessionLifecycleHandler; |
| 2160 | this.sessionLifecycleHandlers.add(wildcardHandler); |
| 2161 | return () => { |
| 2162 | this.sessionLifecycleHandlers.delete(wildcardHandler); |
| 2163 | }; |
| 2164 | } |
| 2165 | |
| 2166 | /** |
| 2167 | * Start the CLI server process |
no test coverage detected