(wsUrl: string)
| 99 | } |
| 100 | |
| 101 | async function createWebSocketClient(wsUrl: string): Promise<WebSocketClientHandle> { |
| 102 | const ws = new WebSocket(wsUrl); |
| 103 | |
| 104 | // Wait for connection to open |
| 105 | await new Promise<void>((resolve, reject) => { |
| 106 | ws.on("open", () => resolve()); |
| 107 | ws.on("error", reject); |
| 108 | }); |
| 109 | |
| 110 | const link = new WebSocketRPCLink({ websocket: ws as unknown as globalThis.WebSocket }); |
| 111 | // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- needed for tsgo typecheck |
| 112 | const client = createORPCClient(link) as RouterClient<AppRouter>; |
| 113 | |
| 114 | return { |
| 115 | client, |
| 116 | close: () => ws.close(), |
| 117 | }; |
| 118 | } |
| 119 | |
| 120 | function createProjectConfig(projectKind?: ProjectConfig["projectKind"]): ProjectConfig { |
| 121 | return { |
no test coverage detected