Path: blob/main/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Disposable } from '../../../../base/common/lifecycle.js';6import { URI } from '../../../../base/common/uri.js';7import { IExtensionRecommendationReason } from '../../../services/extensionRecommendations/common/extensionRecommendations.js';89export type GalleryExtensionRecommendation = {10readonly extension: string;11readonly reason: IExtensionRecommendationReason;12};1314export type ResourceExtensionRecommendation = {15readonly extension: URI;16readonly reason: IExtensionRecommendationReason;17};1819export type ExtensionRecommendation = GalleryExtensionRecommendation | ResourceExtensionRecommendation;2021export abstract class ExtensionRecommendations extends Disposable {2223readonly abstract recommendations: ReadonlyArray<ExtensionRecommendation>;24protected abstract doActivate(): Promise<void>;2526private _activationPromise: Promise<void> | null = null;27get activated(): boolean { return this._activationPromise !== null; }28activate(): Promise<void> {29if (!this._activationPromise) {30this._activationPromise = this.doActivate();31}32return this._activationPromise;33}3435}363738