@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
212 lines (210 loc) • 9.95 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import {
MessageBoxOptions,
MessageBoxReturnValue,
OpenDevToolsOptions,
OpenDialogOptions,
OpenDialogReturnValue,
SaveDialogOptions,
SaveDialogReturnValue,
} from 'electron';
import { Event } from '@sussudio/base/common/event.mjs';
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { AddFirstParameterToFunctions } from '@sussudio/base/common/types.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { MouseInputEvent } from '@sussudio/base/parts/sandbox/common/electronTypes.mjs';
import { ISerializableCommandAction } from '../../action/common/action.mjs';
import { INativeOpenDialogOptions } from '../../dialogs/common/dialogs.mjs';
import { IDialogMainService } from '../../dialogs/electron-main/dialogMainService.mjs';
import { IEnvironmentMainService } from '../../environment/electron-main/environmentMainService.mjs';
import { ILifecycleMainService } from '../../lifecycle/electron-main/lifecycleMainService.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { ICommonNativeHostService, IOSProperties, IOSStatistics } from '../common/native.mjs';
import { IProductService } from '../../product/common/productService.mjs';
import { ISharedProcess } from '../../sharedProcess/node/sharedProcess.mjs';
import { IPartsSplash } from '../../theme/common/themeService.mjs';
import { IThemeMainService } from '../../theme/electron-main/themeMainService.mjs';
import {
IColorScheme,
IOpenedWindow,
IOpenEmptyWindowOptions,
IOpenWindowOptions,
IWindowOpenable,
} from '../../window/common/window.mjs';
import { IWindowsMainService } from '../../windows/electron-main/windows.mjs';
import { IWorkspacesManagementMainService } from '../../workspaces/electron-main/workspacesManagementMainService.mjs';
import { VSBuffer } from '@sussudio/base/common/buffer.mjs';
import { IV8Profile } from '../../profiling/common/profiling.mjs';
import { IStateMainService } from '../../state/electron-main/state.mjs';
export interface INativeHostMainService
extends AddFirstParameterToFunctions<ICommonNativeHostService, Promise<unknown>, number | undefined> {}
export declare const INativeHostMainService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<INativeHostMainService>;
export declare class NativeHostMainService extends Disposable implements INativeHostMainService {
private sharedProcess;
private readonly windowsMainService;
private readonly dialogMainService;
private readonly lifecycleMainService;
private readonly environmentMainService;
private readonly logService;
private readonly productService;
private readonly themeMainService;
private readonly stateMainService;
private readonly workspacesManagementMainService;
readonly _serviceBrand: undefined;
constructor(
sharedProcess: ISharedProcess,
windowsMainService: IWindowsMainService,
dialogMainService: IDialogMainService,
lifecycleMainService: ILifecycleMainService,
environmentMainService: IEnvironmentMainService,
logService: ILogService,
productService: IProductService,
themeMainService: IThemeMainService,
stateMainService: IStateMainService,
workspacesManagementMainService: IWorkspacesManagementMainService,
);
get windowId(): never;
readonly onDidOpenWindow: Event<number>;
readonly onDidTriggerSystemContextMenu: Event<{
windowId: number;
x: number;
y: number;
}>;
readonly onDidMaximizeWindow: Event<number>;
readonly onDidUnmaximizeWindow: Event<number>;
readonly onDidBlurWindow: Event<number>;
readonly onDidFocusWindow: Event<number>;
readonly onDidResumeOS: Event<unknown>;
readonly onDidChangeColorScheme: Event<IColorScheme>;
private readonly _onDidChangePassword;
readonly onDidChangePassword: Event<{
account: string;
service: string;
}>;
readonly onDidChangeDisplay: Event<void>;
getWindows(): Promise<IOpenedWindow[]>;
getWindowCount(windowId: number | undefined): Promise<number>;
getActiveWindowId(windowId: number | undefined): Promise<number | undefined>;
openWindow(windowId: number | undefined, options?: IOpenEmptyWindowOptions): Promise<void>;
openWindow(windowId: number | undefined, toOpen: IWindowOpenable[], options?: IOpenWindowOptions): Promise<void>;
private doOpenWindow;
private doOpenEmptyWindow;
toggleFullScreen(windowId: number | undefined): Promise<void>;
handleTitleDoubleClick(windowId: number | undefined): Promise<void>;
isMaximized(windowId: number | undefined): Promise<boolean>;
maximizeWindow(windowId: number | undefined): Promise<void>;
unmaximizeWindow(windowId: number | undefined): Promise<void>;
minimizeWindow(windowId: number | undefined): Promise<void>;
updateWindowControls(
windowId: number | undefined,
options: {
height?: number;
backgroundColor?: string;
foregroundColor?: string;
},
): Promise<void>;
focusWindow(
windowId: number | undefined,
options?: {
windowId?: number;
force?: boolean;
},
): Promise<void>;
setMinimumSize(windowId: number | undefined, width: number | undefined, height: number | undefined): Promise<void>;
saveWindowSplash(windowId: number | undefined, splash: IPartsSplash): Promise<void>;
installShellCommand(windowId: number | undefined): Promise<void>;
uninstallShellCommand(windowId: number | undefined): Promise<void>;
private getShellCommandLink;
showMessageBox(windowId: number | undefined, options: MessageBoxOptions): Promise<MessageBoxReturnValue>;
showSaveDialog(windowId: number | undefined, options: SaveDialogOptions): Promise<SaveDialogReturnValue>;
showOpenDialog(windowId: number | undefined, options: OpenDialogOptions): Promise<OpenDialogReturnValue>;
private toBrowserWindow;
pickFileFolderAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
pickFolderAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
pickFileAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
pickWorkspaceAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
private doOpenPicked;
showItemInFolder(windowId: number | undefined, path: string): Promise<void>;
setRepresentedFilename(windowId: number | undefined, path: string): Promise<void>;
setDocumentEdited(windowId: number | undefined, edited: boolean): Promise<void>;
openExternal(windowId: number | undefined, url: string): Promise<boolean>;
private safeSnapOpenExternal;
moveItemToTrash(windowId: number | undefined, fullPath: string): Promise<void>;
isAdmin(): Promise<boolean>;
writeElevated(
windowId: number | undefined,
source: URI,
target: URI,
options?: {
unlock?: boolean;
},
): Promise<void>;
private get cliPath();
getOSStatistics(): Promise<IOSStatistics>;
getOSProperties(): Promise<IOSProperties>;
getOSVirtualMachineHint(): Promise<number>;
getOSColorScheme(): Promise<IColorScheme>;
hasWSLFeatureInstalled(): Promise<boolean>;
killProcess(windowId: number | undefined, pid: number, code: string): Promise<void>;
readClipboardText(windowId: number | undefined, type?: 'selection' | 'clipboard'): Promise<string>;
writeClipboardText(windowId: number | undefined, text: string, type?: 'selection' | 'clipboard'): Promise<void>;
readClipboardFindText(windowId: number | undefined): Promise<string>;
writeClipboardFindText(windowId: number | undefined, text: string): Promise<void>;
writeClipboardBuffer(
windowId: number | undefined,
format: string,
buffer: VSBuffer,
type?: 'selection' | 'clipboard',
): Promise<void>;
readClipboardBuffer(windowId: number | undefined, format: string): Promise<VSBuffer>;
hasClipboard(windowId: number | undefined, format: string, type?: 'selection' | 'clipboard'): Promise<boolean>;
newWindowTab(): Promise<void>;
showPreviousWindowTab(): Promise<void>;
showNextWindowTab(): Promise<void>;
moveWindowTabToNewWindow(): Promise<void>;
mergeAllWindowTabs(): Promise<void>;
toggleWindowTabsBar(): Promise<void>;
updateTouchBar(windowId: number | undefined, items: ISerializableCommandAction[][]): Promise<void>;
notifyReady(windowId: number | undefined): Promise<void>;
relaunch(
windowId: number | undefined,
options?: {
addArgs?: string[];
removeArgs?: string[];
},
): Promise<void>;
reload(
windowId: number | undefined,
options?: {
disableExtensions?: boolean;
},
): Promise<void>;
closeWindow(windowId: number | undefined): Promise<void>;
closeWindowById(currentWindowId: number | undefined, targetWindowId?: number | undefined): Promise<void>;
quit(windowId: number | undefined): Promise<void>;
exit(windowId: number | undefined, code: number): Promise<void>;
resolveProxy(windowId: number | undefined, url: string): Promise<string | undefined>;
findFreePort(
windowId: number | undefined,
startPort: number,
giveUpAfter: number,
timeout: number,
stride?: number,
): Promise<number>;
openDevTools(windowId: number | undefined, options?: OpenDevToolsOptions): Promise<void>;
toggleDevTools(windowId: number | undefined): Promise<void>;
sendInputEvent(windowId: number | undefined, event: MouseInputEvent): Promise<void>;
enableSandbox(windowId: number | undefined, enabled: boolean): Promise<void>;
toggleSharedProcessWindow(): Promise<void>;
profileRenderer(windowId: number | undefined, session: string, duration: number): Promise<IV8Profile>;
windowsGetStringRegKey(
windowId: number | undefined,
hive: 'HKEY_CURRENT_USER' | 'HKEY_LOCAL_MACHINE' | 'HKEY_CLASSES_ROOT' | 'HKEY_USERS' | 'HKEY_CURRENT_CONFIG',
path: string,
name: string,
): Promise<string | undefined>;
private windowById;
}