Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/vs/workbench/api/common/extHostTypes.ts')
-rw-r--r--src/vs/workbench/api/common/extHostTypes.ts166
1 files changed, 78 insertions, 88 deletions
diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts
index ce30f68d26e..e50faecd595 100644
--- a/src/vs/workbench/api/common/extHostTypes.ts
+++ b/src/vs/workbench/api/common/extHostTypes.ts
@@ -10,7 +10,7 @@ import { MarkdownString as BaseMarkdownString } from 'vs/base/common/htmlContent
import { ResourceMap } from 'vs/base/common/map';
import { Mimes, normalizeMimeType } from 'vs/base/common/mime';
import { nextCharLength } from 'vs/base/common/strings';
-import { isArray, isStringArray } from 'vs/base/common/types';
+import { isArray, isString, isStringArray } from 'vs/base/common/types';
import { URI } from 'vs/base/common/uri';
import { generateUuid } from 'vs/base/common/uuid';
import { FileSystemProviderErrorCode, markAsFileSystemProviderError } from 'vs/platform/files/common/files';
@@ -19,16 +19,6 @@ import { IRelativePatternDto } from 'vs/workbench/api/common/extHost.protocol';
import { CellEditType, ICellPartialMetadataEdit, IDocumentMetadataEdit } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import type * as vscode from 'vscode';
-function es5ClassCompat(target: Function): any {
- ///@ts-expect-error
- function _() { return Reflect.construct(target, arguments, this.constructor); }
- Object.defineProperty(_, 'name', Object.getOwnPropertyDescriptor(target, 'name')!);
- Object.setPrototypeOf(_, target);
- Object.setPrototypeOf(_.prototype, target.prototype);
- return _;
-}
-
-@es5ClassCompat
export class Disposable {
static from(...inDisposables: { dispose(): any }[]): Disposable {
@@ -59,7 +49,6 @@ export class Disposable {
}
}
-@es5ClassCompat
export class Position {
static Min(...positions: Position[]): Position {
@@ -240,7 +229,6 @@ export class Position {
}
}
-@es5ClassCompat
export class Range {
static isRange(thing: any): thing is vscode.Range {
@@ -386,7 +374,6 @@ export class Range {
}
}
-@es5ClassCompat
export class Selection extends Range {
static isSelection(thing: any): thing is Selection {
@@ -515,7 +502,6 @@ export enum EnvironmentVariableMutatorType {
Prepend = 3
}
-@es5ClassCompat
export class TextEdit {
static isTextEdit(thing: any): thing is TextEdit {
@@ -549,7 +535,6 @@ export class TextEdit {
protected _range: Range;
protected _newText: string | null;
- newText2?: string | SnippetString;
protected _newEol?: EndOfLine;
get range(): Range {
@@ -599,7 +584,6 @@ export class TextEdit {
}
}
-@es5ClassCompat
export class NotebookEdit implements vscode.NotebookEdit {
static isNotebookCellEdit(thing: any): thing is NotebookEdit {
@@ -660,6 +644,7 @@ export const enum FileEditType {
Text = 2,
Cell = 3,
CellReplace = 5,
+ Snippet = 6,
}
export interface IFileOperation {
@@ -677,6 +662,14 @@ export interface IFileTextEdit {
metadata?: vscode.WorkspaceEditEntryMetadata;
}
+export interface IFileSnippetTextEdit {
+ _type: FileEditType.Snippet;
+ uri: URI;
+ range: vscode.Range;
+ edit: vscode.SnippetString;
+ metadata?: vscode.WorkspaceEditEntryMetadata;
+}
+
export interface IFileCellEdit {
_type: FileEditType.Cell;
uri: URI;
@@ -695,9 +688,8 @@ export interface ICellEdit {
}
-type WorkspaceEditEntry = IFileOperation | IFileTextEdit | IFileCellEdit | ICellEdit;
+type WorkspaceEditEntry = IFileOperation | IFileTextEdit | IFileSnippetTextEdit | IFileCellEdit | ICellEdit;
-@es5ClassCompat
export class WorkspaceEdit implements vscode.WorkspaceEdit {
private readonly _edits: WorkspaceEditEntry[] = [];
@@ -762,8 +754,12 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
// --- text
- replace(uri: URI, range: Range, newText: string, metadata?: vscode.WorkspaceEditEntryMetadata): void {
- this._edits.push({ _type: FileEditType.Text, uri, edit: new TextEdit(range, newText), metadata });
+ replace(uri: URI, range: Range, newText: string | vscode.SnippetString, metadata?: vscode.WorkspaceEditEntryMetadata): void {
+ if (typeof newText === 'string') {
+ this._edits.push({ _type: FileEditType.Text, uri, edit: new TextEdit(range, newText), metadata });
+ } else {
+ this._edits.push({ _type: FileEditType.Snippet, uri, range, edit: newText, metadata });
+ }
}
insert(resource: URI, position: Position, newText: string, metadata?: vscode.WorkspaceEditEntryMetadata): void {
@@ -844,7 +840,6 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
}
}
-@es5ClassCompat
export class SnippetString {
static isSnippetString(thing: any): thing is SnippetString {
@@ -951,7 +946,6 @@ export enum DiagnosticSeverity {
Error = 0
}
-@es5ClassCompat
export class Location {
static isLocation(thing: any): thing is vscode.Location {
@@ -990,7 +984,6 @@ export class Location {
}
}
-@es5ClassCompat
export class DiagnosticRelatedInformation {
static is(thing: any): thing is DiagnosticRelatedInformation {
@@ -1024,7 +1017,6 @@ export class DiagnosticRelatedInformation {
}
}
-@es5ClassCompat
export class Diagnostic {
range: Range;
@@ -1075,7 +1067,6 @@ export class Diagnostic {
}
}
-@es5ClassCompat
export class Hover {
public contents: (vscode.MarkdownString | vscode.MarkedString)[];
@@ -1103,7 +1094,6 @@ export enum DocumentHighlightKind {
Write = 2
}
-@es5ClassCompat
export class DocumentHighlight {
range: Range;
@@ -1155,7 +1145,6 @@ export enum SymbolTag {
Deprecated = 1,
}
-@es5ClassCompat
export class SymbolInformation {
static validate(candidate: SymbolInformation): void {
@@ -1200,7 +1189,6 @@ export class SymbolInformation {
}
}
-@es5ClassCompat
export class DocumentSymbol {
static validate(candidate: DocumentSymbol): void {
@@ -1239,7 +1227,6 @@ export enum CodeActionTriggerKind {
Automatic = 2,
}
-@es5ClassCompat
export class CodeAction {
title: string;
@@ -1260,7 +1247,6 @@ export class CodeAction {
}
-@es5ClassCompat
export class CodeActionKind {
private static readonly sep = '.';
@@ -1300,7 +1286,6 @@ CodeActionKind.Source = CodeActionKind.Empty.append('source');
CodeActionKind.SourceOrganizeImports = CodeActionKind.Source.append('organizeImports');
CodeActionKind.SourceFixAll = CodeActionKind.Source.append('fixAll');
-@es5ClassCompat
export class SelectionRange {
range: Range;
@@ -1367,7 +1352,6 @@ export enum LanguageStatusSeverity {
}
-@es5ClassCompat
export class CodeLens {
range: Range;
@@ -1384,7 +1368,6 @@ export class CodeLens {
}
}
-@es5ClassCompat
export class MarkdownString implements vscode.MarkdownString {
readonly #delegate: BaseMarkdownString;
@@ -1455,7 +1438,6 @@ export class MarkdownString implements vscode.MarkdownString {
}
}
-@es5ClassCompat
export class ParameterInformation {
label: string | [number, number];
@@ -1467,7 +1449,6 @@ export class ParameterInformation {
}
}
-@es5ClassCompat
export class SignatureInformation {
label: string;
@@ -1482,7 +1463,6 @@ export class SignatureInformation {
}
}
-@es5ClassCompat
export class SignatureHelp {
signatures: SignatureInformation[];
@@ -1506,7 +1486,6 @@ export enum InlayHintKind {
Parameter = 2,
}
-@es5ClassCompat
export class InlayHintLabelPart {
value: string;
@@ -1519,7 +1498,6 @@ export class InlayHintLabelPart {
}
}
-@es5ClassCompat
export class InlayHint implements vscode.InlayHint {
label: string | InlayHintLabelPart[];
@@ -1588,7 +1566,6 @@ export interface CompletionItemLabel {
description?: string;
}
-@es5ClassCompat
export class CompletionItem implements vscode.CompletionItem {
label: string | CompletionItemLabel;
@@ -1627,7 +1604,6 @@ export class CompletionItem implements vscode.CompletionItem {
}
}
-@es5ClassCompat
export class CompletionList {
isIncomplete?: boolean;
@@ -1639,7 +1615,6 @@ export class CompletionList {
}
}
-@es5ClassCompat
export class InlineSuggestion implements vscode.InlineCompletionItem {
filterText?: string;
@@ -1654,7 +1629,6 @@ export class InlineSuggestion implements vscode.InlineCompletionItem {
}
}
-@es5ClassCompat
export class InlineSuggestionList implements vscode.InlineCompletionList {
items: vscode.InlineCompletionItemNew[];
@@ -1665,7 +1639,6 @@ export class InlineSuggestionList implements vscode.InlineCompletionList {
}
}
-@es5ClassCompat
export class InlineSuggestionNew implements vscode.InlineCompletionItemNew {
insertText: string;
range?: Range;
@@ -1678,7 +1651,6 @@ export class InlineSuggestionNew implements vscode.InlineCompletionItemNew {
}
}
-@es5ClassCompat
export class InlineSuggestionsNew implements vscode.InlineCompletionListNew {
items: vscode.InlineCompletionItemNew[];
@@ -1772,7 +1744,6 @@ export namespace TextEditorSelectionChangeKind {
}
}
-@es5ClassCompat
export class DocumentLink {
range: Range;
@@ -1793,7 +1764,6 @@ export class DocumentLink {
}
}
-@es5ClassCompat
export class Color {
readonly red: number;
readonly green: number;
@@ -1810,7 +1780,6 @@ export class Color {
export type IColorFormat = string | { opaque: string; transparent: string };
-@es5ClassCompat
export class ColorInformation {
range: Range;
@@ -1828,7 +1797,6 @@ export class ColorInformation {
}
}
-@es5ClassCompat
export class ColorPresentation {
label: string;
textEdit?: TextEdit;
@@ -1854,6 +1822,14 @@ export enum SourceControlInputBoxValidationType {
Information = 2
}
+export enum TerminalExitReason {
+ Unknown = 0,
+ Shutdown = 1,
+ Process = 2,
+ User = 3,
+ Extension = 4
+}
+
export class TerminalLink implements vscode.TerminalLink {
constructor(
public startIndex: number,
@@ -1903,7 +1879,6 @@ export enum TaskPanelKind {
New = 3
}
-@es5ClassCompat
export class TaskGroup implements vscode.TaskGroup {
isDefault: boolean | undefined;
@@ -1955,7 +1930,6 @@ function computeTaskExecutionId(values: string[]): string {
return id;
}
-@es5ClassCompat
export class ProcessExecution implements vscode.ProcessExecution {
private _process: string;
@@ -2026,7 +2000,6 @@ export class ProcessExecution implements vscode.ProcessExecution {
}
}
-@es5ClassCompat
export class ShellExecution implements vscode.ShellExecution {
private _commandLine: string | undefined;
@@ -2141,7 +2114,6 @@ export class CustomExecution implements vscode.CustomExecution {
}
}
-@es5ClassCompat
export class Task implements vscode.Task {
private static ExtensionCallbackType: string = 'customExecution';
@@ -2398,16 +2370,64 @@ export enum ProgressLocation {
Notification = 15
}
-@es5ClassCompat
export class TreeItem {
label?: string | vscode.TreeItemLabel;
resourceUri?: URI;
- iconPath?: string | URI | { light: string | URI; dark: string | URI };
+ iconPath?: string | URI | { light: string | URI; dark: string | URI } | ThemeIcon;
command?: vscode.Command;
contextValue?: string;
tooltip?: string | vscode.MarkdownString;
+ static isTreeItem(thing: any): thing is TreeItem {
+ if (thing instanceof TreeItem) {
+ return true;
+ }
+ const treeItemThing = thing as vscode.TreeItem;
+ if (treeItemThing.label !== undefined && !isString(treeItemThing.label) && !(treeItemThing.label.label)) {
+ console.log('INVALID tree item, invalid label', treeItemThing.label);
+ return false;
+ }
+ if ((treeItemThing.id !== undefined) && !isString(treeItemThing.id)) {
+ console.log('INVALID tree item, invalid id', treeItemThing.id);
+ return false;
+ }
+ if ((treeItemThing.iconPath !== undefined) && !isString(treeItemThing.iconPath) && !URI.isUri(treeItemThing.iconPath) && !isString((treeItemThing.iconPath as vscode.ThemeIcon).id)) {
+ console.log('INVALID tree item, invalid iconPath', treeItemThing.iconPath);
+ return false;
+ }
+ if ((treeItemThing.description !== undefined) && !isString(treeItemThing.description) && (typeof treeItemThing.description !== 'boolean')) {
+ console.log('INVALID tree item, invalid description', treeItemThing.description);
+ return false;
+ }
+ if ((treeItemThing.resourceUri !== undefined) && !URI.isUri(treeItemThing.resourceUri)) {
+ console.log('INVALID tree item, invalid resourceUri', treeItemThing.resourceUri);
+ return false;
+ }
+ if ((treeItemThing.tooltip !== undefined) && !isString(treeItemThing.tooltip) && !(treeItemThing.tooltip instanceof MarkdownString)) {
+ console.log('INVALID tree item, invalid tooltip', treeItemThing.tooltip);
+ return false;
+ }
+ if ((treeItemThing.command !== undefined) && !treeItemThing.command.command) {
+ console.log('INVALID tree item, invalid command', treeItemThing.command);
+ return false;
+ }
+ if ((treeItemThing.collapsibleState !== undefined) && (treeItemThing.collapsibleState < TreeItemCollapsibleState.None) && (treeItemThing.collapsibleState > TreeItemCollapsibleState.Expanded)) {
+ console.log('INVALID tree item, invalid collapsibleState', treeItemThing.collapsibleState);
+ return false;
+ }
+ if ((treeItemThing.contextValue !== undefined) && !isString(treeItemThing.contextValue)) {
+ console.log('INVALID tree item, invalid contextValue', treeItemThing.contextValue);
+ return false;
+ }
+ if ((treeItemThing.accessibilityInformation !== undefined) && !treeItemThing.accessibilityInformation.label) {
+ console.log('INVALID tree item, invalid accessibilityInformation', treeItemThing.accessibilityInformation);
+ return false;
+ }
+
+ return true;
+ }
+
constructor(label: string | vscode.TreeItemLabel, collapsibleState?: vscode.TreeItemCollapsibleState);
constructor(resourceUri: URI, collapsibleState?: vscode.TreeItemCollapsibleState);
constructor(arg1: string | vscode.TreeItemLabel | URI, public collapsibleState: vscode.TreeItemCollapsibleState = TreeItemCollapsibleState.None) {
@@ -2426,7 +2446,6 @@ export enum TreeItemCollapsibleState {
Expanded = 2
}
-@es5ClassCompat
export class DataTransferItem {
async asString(): Promise<string> {
@@ -2440,7 +2459,6 @@ export class DataTransferItem {
constructor(public readonly value: any) { }
}
-@es5ClassCompat
export class DataTransfer implements vscode.DataTransfer {
#items = new Map<string, DataTransferItem[]>();
@@ -2482,7 +2500,6 @@ export class DataTransfer implements vscode.DataTransfer {
}
}
-@es5ClassCompat
export class DocumentDropEdit {
insertText: string | SnippetString;
@@ -2493,7 +2510,6 @@ export class DocumentDropEdit {
}
}
-@es5ClassCompat
export class DocumentPasteEdit {
insertText: string | SnippetString;
@@ -2504,7 +2520,6 @@ export class DocumentPasteEdit {
}
}
-@es5ClassCompat
export class ThemeIcon {
static File: ThemeIcon;
@@ -2522,7 +2537,6 @@ ThemeIcon.File = new ThemeIcon('file');
ThemeIcon.Folder = new ThemeIcon('folder');
-@es5ClassCompat
export class ThemeColor {
id: string;
constructor(id: string) {
@@ -2538,7 +2552,6 @@ export enum ConfigurationTarget {
WorkspaceFolder = 3
}
-@es5ClassCompat
export class RelativePattern implements IRelativePattern {
pattern: string;
@@ -2592,7 +2605,6 @@ export class RelativePattern implements IRelativePattern {
}
}
-@es5ClassCompat
export class Breakpoint {
private _id: string | undefined;
@@ -2623,7 +2635,6 @@ export class Breakpoint {
}
}
-@es5ClassCompat
export class SourceBreakpoint extends Breakpoint {
readonly location: Location;
@@ -2636,7 +2647,6 @@ export class SourceBreakpoint extends Breakpoint {
}
}
-@es5ClassCompat
export class FunctionBreakpoint extends Breakpoint {
readonly functionName: string;
@@ -2646,7 +2656,6 @@ export class FunctionBreakpoint extends Breakpoint {
}
}
-@es5ClassCompat
export class DataBreakpoint extends Breakpoint {
readonly label: string;
readonly dataId: string;
@@ -2664,7 +2673,6 @@ export class DataBreakpoint extends Breakpoint {
}
-@es5ClassCompat
export class DebugAdapterExecutable implements vscode.DebugAdapterExecutable {
readonly command: string;
readonly args: string[];
@@ -2677,7 +2685,6 @@ export class DebugAdapterExecutable implements vscode.DebugAdapterExecutable {
}
}
-@es5ClassCompat
export class DebugAdapterServer implements vscode.DebugAdapterServer {
readonly port: number;
readonly host?: string;
@@ -2688,13 +2695,11 @@ export class DebugAdapterServer implements vscode.DebugAdapterServer {
}
}
-@es5ClassCompat
export class DebugAdapterNamedPipeServer implements vscode.DebugAdapterNamedPipeServer {
constructor(public readonly path: string) {
}
}
-@es5ClassCompat
export class DebugAdapterInlineImplementation implements vscode.DebugAdapterInlineImplementation {
readonly implementation: vscode.DebugAdapter;
@@ -2703,7 +2708,6 @@ export class DebugAdapterInlineImplementation implements vscode.DebugAdapterInli
}
}
-@es5ClassCompat
export class EvaluatableExpression implements vscode.EvaluatableExpression {
readonly range: vscode.Range;
readonly expression?: string;
@@ -2724,7 +2728,6 @@ export enum InlineCompletionTriggerKindNew {
Automatic = 1,
}
-@es5ClassCompat
export class InlineValueText implements vscode.InlineValueText {
readonly range: Range;
readonly text: string;
@@ -2735,7 +2738,6 @@ export class InlineValueText implements vscode.InlineValueText {
}
}
-@es5ClassCompat
export class InlineValueVariableLookup implements vscode.InlineValueVariableLookup {
readonly range: Range;
readonly variableName?: string;
@@ -2748,7 +2750,6 @@ export class InlineValueVariableLookup implements vscode.InlineValueVariableLook
}
}
-@es5ClassCompat
export class InlineValueEvaluatableExpression implements vscode.InlineValueEvaluatableExpression {
readonly range: Range;
readonly expression?: string;
@@ -2759,7 +2760,6 @@ export class InlineValueEvaluatableExpression implements vscode.InlineValueEvalu
}
}
-@es5ClassCompat
export class InlineValueContext implements vscode.InlineValueContext {
readonly frameId: number;
@@ -2779,7 +2779,6 @@ export enum FileChangeType {
Deleted = 3,
}
-@es5ClassCompat
export class FileSystemError extends Error {
static FileExists(messageOrUri?: string | URI): FileSystemError {
@@ -2829,7 +2828,6 @@ export class FileSystemError extends Error {
//#region folding api
-@es5ClassCompat
export class FoldingRange {
start: number;
@@ -3119,7 +3117,6 @@ export enum DebugConsoleMode {
//#endregion
-@es5ClassCompat
export class QuickInputButtons {
static readonly Back: vscode.QuickInputButton = { iconPath: new ThemeIcon('arrow-left') };
@@ -3175,7 +3172,6 @@ export class FileDecoration {
//#region Theming
-@es5ClassCompat
export class ColorTheme implements vscode.ColorTheme {
constructor(public readonly kind: ColorThemeKind) {
}
@@ -3470,7 +3466,6 @@ export class NotebookRendererScript {
//#region Timeline
-@es5ClassCompat
export class TimelineItem implements vscode.TimelineItem {
constructor(public label: string, public timestamp: number) { }
}
@@ -3560,7 +3555,6 @@ export enum TestRunProfileKind {
Coverage = 3,
}
-@es5ClassCompat
export class TestRunRequest implements vscode.TestRunRequest {
constructor(
public readonly include: vscode.TestItem[] | undefined = undefined,
@@ -3569,7 +3563,6 @@ export class TestRunRequest implements vscode.TestRunRequest {
) { }
}
-@es5ClassCompat
export class TestMessage implements vscode.TestMessage {
public expectedOutput?: string;
public actualOutput?: string;
@@ -3585,7 +3578,6 @@ export class TestMessage implements vscode.TestMessage {
constructor(public message: string | vscode.MarkdownString) { }
}
-@es5ClassCompat
export class TestTag implements vscode.TestTag {
constructor(public readonly id: string) { }
}
@@ -3593,12 +3585,10 @@ export class TestTag implements vscode.TestTag {
//#endregion
//#region Test Coverage
-@es5ClassCompat
export class CoveredCount implements vscode.CoveredCount {
constructor(public covered: number, public total: number) { }
}
-@es5ClassCompat
export class FileCoverage implements vscode.FileCoverage {
public static fromDetails(uri: vscode.Uri, details: vscode.DetailedCoverage[]): vscode.FileCoverage {
const statements = new CoveredCount(0, 0);
@@ -3642,7 +3632,6 @@ export class FileCoverage implements vscode.FileCoverage {
) { }
}
-@es5ClassCompat
export class StatementCoverage implements vscode.StatementCoverage {
constructor(
public executionCount: number,
@@ -3651,7 +3640,6 @@ export class StatementCoverage implements vscode.StatementCoverage {
) { }
}
-@es5ClassCompat
export class BranchCoverage implements vscode.BranchCoverage {
constructor(
public executionCount: number,
@@ -3659,7 +3647,6 @@ export class BranchCoverage implements vscode.BranchCoverage {
) { }
}
-@es5ClassCompat
export class FunctionCoverage implements vscode.FunctionCoverage {
constructor(
public executionCount: number,
@@ -3741,4 +3728,7 @@ export class NotebookDiffEditorTabInput {
export class TerminalEditorTabInput {
constructor() { }
}
+export class InteractiveWindowInput {
+ constructor(readonly uri: URI, readonly inputBoxUri: URI) { }
+}
//#endregion