mirror of
https://github.com/stablyai/orca.git
synced 2026-11-02 10:08:13 +00:00
The split silently dropped jira.searchUsers and runtimeEnvironments.retryControlConnection. Neither failed typecheck: the bridge modules carried no satisfies annotation and the composed api object was unannotated, so a missing key was only a runtime TypeError in the renderer. Annotates each module against PreloadApi, the type window.api is already declared as, so the contract supplies the shape rather than a parallel copy. Deleting jira.searchUsers now fails with TS2741 naming the key. Turning this on surfaced 106 places where a bridge locally annotated Promise<unknown> or unknown[] over a contract that declares concrete types -- the bridge was erasing types the renderer relied on. Those annotations are gone. Also exposes app.awaitBeforeUnloadCheckpoint, which was declared and called but never actually on the bridge, so the lazy-chunk recovery reload optional-chained to a no-op and navigated without joining the checkpoint. The missing key was caught by the new annotation rather than by hand.
35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { ipcRenderer } from 'electron'
|
|
import type {
|
|
TerminalPreviewConnectResult,
|
|
TerminalPreviewDataPayload
|
|
} from '../../shared/terminal-preview'
|
|
import type { PreloadApi } from '../api-types'
|
|
|
|
export const terminalPreviewApi = {
|
|
connect: (
|
|
ptyId: string,
|
|
opts?: { scrollbackRows?: number }
|
|
): Promise<TerminalPreviewConnectResult> =>
|
|
ipcRenderer.invoke('terminalPreview:connect', { ptyId, opts }),
|
|
input: (ptyId: string, data: string): Promise<boolean> =>
|
|
ipcRenderer.invoke('terminalPreview:input', { ptyId, data }),
|
|
fit: (
|
|
ptyId: string,
|
|
cols: number,
|
|
rows: number
|
|
): Promise<{ cols: number; rows: number } | null> =>
|
|
ipcRenderer.invoke('terminalPreview:fit', { ptyId, cols, rows }),
|
|
ack: (ptyId: string, bytes: number): Promise<void> =>
|
|
ipcRenderer.invoke('terminalPreview:ack', { ptyId, bytes }),
|
|
unsubscribe: (ptyId: string): Promise<void> =>
|
|
ipcRenderer.invoke('terminalPreview:unsubscribe', { ptyId }),
|
|
onData: (callback: (payload: TerminalPreviewDataPayload) => void): (() => void) => {
|
|
const listener = (
|
|
_event: Electron.IpcRendererEvent,
|
|
payload: TerminalPreviewDataPayload
|
|
): void => callback(payload)
|
|
ipcRenderer.on('terminalPreview:data', listener)
|
|
return () => ipcRenderer.removeListener('terminalPreview:data', listener)
|
|
}
|
|
} satisfies PreloadApi['terminalPreview']
|