Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
7
import { IStringDictionary } from '../../../../base/common/collections.js';
8
import { Event } from '../../../../base/common/event.js';
9
import { URI } from '../../../../base/common/uri.js';
10
11
export const enum ExtensionRecommendationReason {
12
Workspace,
13
File,
14
Executable,
15
WorkspaceConfig,
16
DynamicWorkspace,
17
Experimental,
18
Application,
19
}
20
21
export interface IExtensionRecommendationReason {
22
reasonId: ExtensionRecommendationReason;
23
reasonText: string;
24
}
25
26
export const IExtensionRecommendationsService = createDecorator<IExtensionRecommendationsService>('extensionRecommendationsService');
27
28
export interface IExtensionRecommendationsService {
29
readonly _serviceBrand: undefined;
30
31
readonly onDidChangeRecommendations: Event<void>;
32
getAllRecommendationsWithReason(): IStringDictionary<IExtensionRecommendationReason>;
33
34
getImportantRecommendations(): Promise<string[]>;
35
getOtherRecommendations(): Promise<string[]>;
36
getFileBasedRecommendations(): string[];
37
getExeBasedRecommendations(exe?: string): Promise<{ important: string[]; others: string[] }>;
38
getConfigBasedRecommendations(): Promise<{ important: string[]; others: string[] }>;
39
getWorkspaceRecommendations(): Promise<Array<string | URI>>;
40
getKeymapRecommendations(): string[];
41
getLanguageRecommendations(): string[];
42
getRemoteRecommendations(): string[];
43
}
44
45
export type IgnoredRecommendationChangeNotification = {
46
extensionId: string;
47
isRecommended: boolean;
48
};
49
50
export const IExtensionIgnoredRecommendationsService = createDecorator<IExtensionIgnoredRecommendationsService>('IExtensionIgnoredRecommendationsService');
51
52
export interface IExtensionIgnoredRecommendationsService {
53
readonly _serviceBrand: undefined;
54
55
onDidChangeIgnoredRecommendations: Event<void>;
56
readonly ignoredRecommendations: string[];
57
58
onDidChangeGlobalIgnoredRecommendation: Event<IgnoredRecommendationChangeNotification>;
59
readonly globalIgnoredRecommendations: string[];
60
toggleGlobalIgnoredRecommendation(extensionId: string, ignore: boolean): void;
61
}
62
63
64
65