Skip to content

Commit 98233d1

Browse files
committed
fix(studio-bridge): resolve tsc --build type errors
Remove unused imports/variables, add missing barrel exports (StudioState, DataModelInstance, OutputLevel), fix mock type signatures in tests, and import Socket from net instead of http.
1 parent 9d2c719 commit 98233d1

15 files changed

Lines changed: 33 additions & 38 deletions

tools/studio-bridge/src/bridge/bridge-session.test.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import { describe, it, expect, vi } from 'vitest';
77
import { EventEmitter } from 'events';
88
import { BridgeSession } from './bridge-session.js';
9-
import type { TransportHandle } from './internal/session-tracker.js';
109
import type { SessionInfo } from './types.js';
1110
import { SessionDisconnectedError } from './types.js';
1211
import type { PluginMessage, ServerMessage } from '../server/web-socket-protocol.js';
@@ -15,13 +14,10 @@ import type { PluginMessage, ServerMessage } from '../server/web-socket-protocol
1514
// Helpers
1615
// ---------------------------------------------------------------------------
1716

18-
class MockTransportHandle extends EventEmitter implements TransportHandle {
17+
class MockTransportHandle extends EventEmitter {
1918
private _isConnected: boolean;
2019

21-
sendActionAsync = vi.fn(async <TResponse>(): Promise<TResponse> => {
22-
return {} as TResponse;
23-
});
24-
20+
sendActionAsync = vi.fn(async () => ({})) as any;
2521
sendMessage = vi.fn();
2622

2723
constructor(connected = true) {

tools/studio-bridge/src/bridge/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ export type {
2626
LogOptions,
2727
QueryDataModelOptions,
2828
LogFollowOptions,
29+
StudioState,
30+
DataModelInstance,
31+
OutputLevel,
2932
} from './types.js';
3033

3134
// Error classes

tools/studio-bridge/src/bridge/internal/__tests__/failover-graceful.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
* Uses real BridgeHost and HandOffManager instances with ephemeral ports.
77
*/
88

9-
import { describe, it, expect, afterEach, vi } from 'vitest';
9+
import { describe, it, expect, afterEach } from 'vitest';
1010
import { WebSocket } from 'ws';
1111
import { BridgeHost } from '../bridge-host.js';
12-
import { HandOffManager, type HandOffDependencies } from '../hand-off.js';
13-
import { decodeHostMessage, encodeHostMessage } from '../host-protocol.js';
12+
import { HandOffManager } from '../hand-off.js';
13+
import { decodeHostMessage } from '../host-protocol.js';
1414

1515
// ---------------------------------------------------------------------------
1616
// Helpers

tools/studio-bridge/src/bridge/internal/bridge-client.test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@
44
* event handling.
55
*/
66

7-
import { describe, it, expect, vi, afterEach } from 'vitest';
7+
import { describe, it, expect, afterEach } from 'vitest';
88
import { WebSocketServer, WebSocket } from 'ws';
99
import { BridgeClient } from './bridge-client.js';
1010
import {
1111
encodeHostMessage,
1212
decodeHostMessage,
13-
type HostEnvelope,
14-
type ListSessionsRequest,
1513
type HostProtocolMessage,
1614
} from './host-protocol.js';
1715
import type { SessionInfo } from '../types.js';
@@ -89,7 +87,6 @@ async function createMockHostWithSessions(
8987
const host = await createMockHost();
9088

9189
// Override the message handler to respond with sessions
92-
const originalConnection = host.wss.listeners('connection');
9390
host.wss.removeAllListeners('connection');
9491

9592
host.wss.on('connection', (ws) => {

tools/studio-bridge/src/bridge/internal/bridge-client.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,16 @@
1313

1414
import { EventEmitter } from 'events';
1515
import { randomUUID } from 'crypto';
16-
import { TransportClient, type TransportClientOptions } from './transport-client.js';
16+
import { TransportClient } from './transport-client.js';
1717
import {
1818
encodeHostMessage,
1919
decodeHostMessage,
2020
type HostEnvelope,
2121
type HostResponse,
2222
type ListSessionsRequest,
2323
type ListSessionsResponse,
24-
type ListInstancesRequest,
2524
type ListInstancesResponse,
2625
type SessionEvent,
27-
type HostProtocolMessage,
28-
type HostTransferNotice,
2926
} from './host-protocol.js';
3027
import { HandOffManager } from './hand-off.js';
3128
import type { TransportHandle } from './session-tracker.js';
@@ -140,7 +137,7 @@ export class BridgeClient extends EventEmitter {
140137
this._isConnected = false;
141138

142139
// Cancel all pending requests
143-
for (const [requestId, entry] of this._pendingRequests) {
140+
for (const [, entry] of this._pendingRequests) {
144141
clearTimeout(entry.timer);
145142
entry.reject(new Error('Client disconnected'));
146143
}

tools/studio-bridge/src/bridge/internal/bridge-host.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { EventEmitter } from 'events';
88
import type { WebSocket, RawData } from 'ws';
99
import type { IncomingMessage } from 'http';
10-
import { TransportServer, type TransportServerOptions } from './transport-server.js';
10+
import { TransportServer } from './transport-server.js';
1111
import { createHealthHandler } from './health-endpoint.js';
1212
import { encodeHostMessage, type HostTransferNotice } from './host-protocol.js';
1313
import {

tools/studio-bridge/src/bridge/internal/hand-off.test.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
* dependencies (no real network).
55
*/
66

7-
import { describe, it, expect, vi, beforeEach } from 'vitest';
7+
import { describe, it, expect, vi } from 'vitest';
88
import {
99
HandOffManager,
1010
computeTakeoverJitterMs,
1111
type HandOffDependencies,
1212
type HandOffLogEntry,
1313
} from './hand-off.js';
1414
import { HostUnreachableError } from '../types.js';
15-
import { createHealthHandler, type HealthInfo } from './health-endpoint.js';
15+
import { createHealthHandler } from './health-endpoint.js';
1616

1717
// ---------------------------------------------------------------------------
1818
// Helpers
@@ -257,7 +257,7 @@ describe('HandOffManager', () => {
257257
await manager.onHostDisconnectedAsync();
258258

259259
// Should have logs: host-transfer-notice, graceful-disconnect, bind-success
260-
const reasons = logger.mock.calls.map((c: [HandOffLogEntry]) => c[0].reason);
260+
const reasons = logger.mock.calls.map((c: any[]) => c[0].reason);
261261
expect(reasons).toContain('host-transfer-notice');
262262
expect(reasons).toContain('graceful-disconnect');
263263
expect(reasons).toContain('bind-success');
@@ -275,7 +275,7 @@ describe('HandOffManager', () => {
275275
await manager.onHostDisconnectedAsync();
276276
randomSpy.mockRestore();
277277

278-
const reasons = logger.mock.calls.map((c: [HandOffLogEntry]) => c[0].reason);
278+
const reasons = logger.mock.calls.map((c: any[]) => c[0].reason);
279279
expect(reasons).toContain('crash-jitter');
280280
expect(reasons).toContain('crash-detected');
281281
});
@@ -297,7 +297,7 @@ describe('HandOffManager', () => {
297297
await manager.onHostDisconnectedAsync();
298298

299299
const retryEntries = logger.mock.calls
300-
.map((c: [HandOffLogEntry]) => c[0])
300+
.map((c: any[]) => c[0])
301301
.filter((e: HandOffLogEntry) => e.reason === 'retry');
302302
expect(retryEntries.length).toBe(2);
303303
expect(retryEntries[0].data?.attempt).toBe(0);
@@ -316,7 +316,7 @@ describe('HandOffManager', () => {
316316
manager.onHostTransferNotice();
317317
await expect(manager.onHostDisconnectedAsync()).rejects.toThrow(HostUnreachableError);
318318

319-
const reasons = logger.mock.calls.map((c: [HandOffLogEntry]) => c[0].reason);
319+
const reasons = logger.mock.calls.map((c: any[]) => c[0].reason);
320320
expect(reasons).toContain('retries-exhausted');
321321
});
322322

@@ -371,12 +371,10 @@ describe('Health endpoint observability fields', () => {
371371

372372
// Simulate an HTTP response object
373373
let statusCode = 0;
374-
let headers: Record<string, string> = {};
375374
let body = '';
376375
const res = {
377-
writeHead(code: number, hdrs: Record<string, string | number>) {
376+
writeHead(code: number, _hdrs: Record<string, string | number>) {
378377
statusCode = code;
379-
headers = hdrs as Record<string, string>;
380378
},
381379
end(data: string) {
382380
body = data;

tools/studio-bridge/src/bridge/internal/health-endpoint.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* and the checkHealthAsync client function.
44
*/
55

6-
import { describe, it, expect, vi, afterEach } from 'vitest';
6+
import { describe, it, expect, afterEach } from 'vitest';
77
import http from 'http';
88
import { checkHealthAsync, createHealthHandler, type HealthInfo } from './health-endpoint.js';
99

tools/studio-bridge/src/bridge/internal/session-tracker.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55

66
import { describe, it, expect, vi, beforeEach } from 'vitest';
77
import { SessionTracker, type TransportHandle, type TrackedSession } from './session-tracker.js';
8-
import type { SessionInfo, InstanceInfo, SessionContext } from '../types.js';
9-
import type { PluginMessage, ServerMessage } from '../../server/web-socket-protocol.js';
8+
import type { SessionInfo, InstanceInfo } from '../types.js';
109
import { EventEmitter } from 'events';
1110

1211
// ---------------------------------------------------------------------------
@@ -19,7 +18,7 @@ function createMockHandle(connected = true): TransportHandle {
1918
sendActionAsync: vi.fn(async () => ({}) as any),
2019
sendMessage: vi.fn(),
2120
isConnected: connected,
22-
on: emitter.on.bind(emitter) as TransportHandle['on'],
21+
on: emitter.on.bind(emitter) as unknown as TransportHandle['on'],
2322
};
2423
}
2524

tools/studio-bridge/src/bridge/internal/transport-server.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
* routes connections by URL path.
66
*/
77

8-
import { createServer, type IncomingMessage, type ServerResponse, type Server, type Socket } from 'http';
8+
import { createServer, type IncomingMessage, type ServerResponse, type Server } from 'http';
9+
import type { Socket } from 'net';
910
import { WebSocketServer, WebSocket } from 'ws';
1011
import { URL } from 'url';
1112

0 commit comments

Comments
 (0)