(transport: TransportKey)
| 79 | } |
| 80 | |
| 81 | function useConnection(transport: TransportKey): ConnectionAdapter { |
| 82 | return useMemo(() => { |
| 83 | const selected = transports.find((item) => item.key === transport) |
| 84 | const url = endpointUrl(selected?.endpoint ?? '/chat/http') |
| 85 | |
| 86 | switch (transport) { |
| 87 | case 'fetch-http': |
| 88 | return fetchHttpStream(url) |
| 89 | case 'xhr-http': |
| 90 | return xhrHttpStream(url) |
| 91 | case 'xhr-sse': |
| 92 | return xhrServerSentEvents(url) |
| 93 | } |
| 94 | }, [transport]) |
| 95 | } |
| 96 | |
| 97 | function isRecord(value: unknown): value is Record<string, unknown> { |
| 98 | return typeof value === 'object' && value !== null && !Array.isArray(value) |
no test coverage detected