()
| 214 | lastHash = hashHtml(await renderCurrent(cwd, id, channelPath)); |
| 215 | |
| 216 | const close = async (): Promise<void> => { |
| 217 | if (closed) return; |
| 218 | closed = true; |
| 219 | debouncedFlush.cancel(); |
| 220 | try { watcher?.close(); } catch { /* ignore */ } |
| 221 | for (const res of clients) { try { res.end(); } catch { /* ignore */ } } |
| 222 | clients.clear(); |
| 223 | await new Promise<void>(resolve => server.close(() => resolve())); |
| 224 | }; |
| 225 | |
| 226 | return { |
| 227 | id, |