Tighten session preload API typing (#3920)

This commit is contained in:
Neil 2026-05-30 13:27:24 -07:00 committed by GitHub
parent cfe254823d
commit a563875934
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 25 additions and 26 deletions

View File

@ -35,6 +35,7 @@ import type {
FloatingTerminalCwdRequest,
MarkdownDocument,
SearchResult,
UpdateStatus,
WorktreeBaseStatusEvent,
WorktreeRemoteBranchConflictEvent
} from '../shared/types'
@ -50,6 +51,7 @@ import type {
} from '../shared/runtime-types'
import type { RuntimeRpcResponse } from '../shared/runtime-rpc-envelope'
import type { PublicKnownRuntimeEnvironment } from '../shared/runtime-environments'
import type { RemoteWorkspaceChangedEvent } from '../shared/remote-workspace-types'
import type {
RuntimeMobileMarkdownRequest,
RuntimeMobileMarkdownResponse
@ -1924,40 +1926,37 @@ const api = {
},
session: {
get: (): Promise<unknown> => ipcRenderer.invoke('session:get'),
set: (args: unknown): Promise<void> => ipcRenderer.invoke('session:set', args),
get: () => ipcRenderer.invoke('session:get'),
set: (args) => ipcRenderer.invoke('session:set', args),
/** Synchronous session save for beforeunload — blocks until flushed to disk. */
setSync: (args: unknown): void => {
setSync: (args) => {
ipcRenderer.sendSync('session:set-sync', args)
}
},
} satisfies PreloadApi['session'],
remoteWorkspace: {
get: (args: { targetId: string }): Promise<unknown> =>
ipcRenderer.invoke('remoteWorkspace:get', args),
setForConnectedTargets: (args: {
session: unknown
hydratedTargetIds?: string[]
}): Promise<unknown> => ipcRenderer.invoke('remoteWorkspace:setForConnectedTargets', args),
listEnabledConnectedTargets: (): Promise<string[]> =>
get: (args) => ipcRenderer.invoke('remoteWorkspace:get', args),
setForConnectedTargets: (args) =>
ipcRenderer.invoke('remoteWorkspace:setForConnectedTargets', args),
listEnabledConnectedTargets: () =>
ipcRenderer.invoke('remoteWorkspace:listEnabledConnectedTargets'),
listConnectedClients: (args?: { targetIds?: string[] }): Promise<unknown> =>
listConnectedClients: (args) =>
ipcRenderer.invoke('remoteWorkspace:listConnectedClients', args),
clientId: (): Promise<string> => ipcRenderer.invoke('remoteWorkspace:clientId'),
onChanged: (callback: (event: unknown) => void): (() => void) => {
const listener = (_event: Electron.IpcRendererEvent, data: unknown) => callback(data)
clientId: () => ipcRenderer.invoke('remoteWorkspace:clientId'),
onChanged: (callback) => {
const listener = (_event: Electron.IpcRendererEvent, data: RemoteWorkspaceChangedEvent) =>
callback(data)
ipcRenderer.on('remoteWorkspace:changed', listener)
return () => ipcRenderer.removeListener('remoteWorkspace:changed', listener)
}
},
} satisfies PreloadApi['remoteWorkspace'],
updater: {
getStatus: (): Promise<unknown> => ipcRenderer.invoke('updater:getStatus'),
getVersion: (): Promise<string> => ipcRenderer.invoke('updater:getVersion'),
check: (options?: { includePrerelease?: boolean }): Promise<void> =>
ipcRenderer.invoke('updater:check', options),
download: (): Promise<void> => ipcRenderer.invoke('updater:download'),
dismissNudge: (): Promise<void> => ipcRenderer.invoke('updater:dismissNudge'),
getStatus: () => ipcRenderer.invoke('updater:getStatus'),
getVersion: () => ipcRenderer.invoke('updater:getVersion'),
check: (options) => ipcRenderer.invoke('updater:check', options),
download: () => ipcRenderer.invoke('updater:download'),
dismissNudge: () => ipcRenderer.invoke('updater:dismissNudge'),
quitAndInstall: async (): Promise<void> => {
// Why: update installs must proceed even when a dirty-file auto-save
// fails; otherwise a downloaded update can get stuck behind hidden editor
@ -1976,17 +1975,17 @@ const api = {
throw error
}
},
onStatus: (callback: (status: unknown) => void): (() => void) => {
const listener = (_event: Electron.IpcRendererEvent, status: unknown) => callback(status)
onStatus: (callback) => {
const listener = (_event: Electron.IpcRendererEvent, status: UpdateStatus) => callback(status)
ipcRenderer.on('updater:status', listener)
return () => ipcRenderer.removeListener('updater:status', listener)
},
onClearDismissal: (callback: () => void): (() => void) => {
onClearDismissal: (callback) => {
const listener = (_event: Electron.IpcRendererEvent) => callback()
ipcRenderer.on('updater:clearDismissal', listener)
return () => ipcRenderer.removeListener('updater:clearDismissal', listener)
}
},
} satisfies PreloadApi['updater'],
notebook: {
runPythonCell: (args: {