sussudio
Version:
An unofficial VS Code Internal API
50 lines (49 loc) • 2.19 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 { Event } from "../../../base/common/event.mjs";
import { IJSONSchema } from "../../../base/common/jsonSchema.mjs";
import { IDisposable } from "../../../base/common/lifecycle.mjs";
import { TypeConstraint } from "../../../base/common/types.mjs";
import { ServicesAccessor } from "../../instantiation/common/instantiation.mjs";
export declare const ICommandService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<ICommandService>;
export interface ICommandEvent {
commandId: string;
args: any[];
}
export interface ICommandService {
readonly _serviceBrand: undefined;
onWillExecuteCommand: Event<ICommandEvent>;
onDidExecuteCommand: Event<ICommandEvent>;
executeCommand<T = any>(commandId: string, ...args: any[]): Promise<T | undefined>;
}
export type ICommandsMap = Map<string, ICommand>;
export interface ICommandHandler {
(accessor: ServicesAccessor, ...args: any[]): void;
}
export interface ICommand {
id: string;
handler: ICommandHandler;
description?: ICommandHandlerDescription | null;
}
export interface ICommandHandlerDescription {
readonly description: string;
readonly args: ReadonlyArray<{
readonly name: string;
readonly isOptional?: boolean;
readonly description?: string;
readonly constraint?: TypeConstraint;
readonly schema?: IJSONSchema;
}>;
readonly returns?: string;
}
export interface ICommandRegistry {
onDidRegisterCommand: Event<string>;
registerCommand(id: string, command: ICommandHandler): IDisposable;
registerCommand(command: ICommand): IDisposable;
registerCommandAlias(oldId: string, newId: string): IDisposable;
getCommand(id: string): ICommand | undefined;
getCommands(): ICommandsMap;
}
export declare const CommandsRegistry: ICommandRegistry;