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 { ExtensionIdentifier, ExtensionIdentifierMap, ExtensionIdentifierSet, IExtensionDescription } from '../../../../platform/extensions/common/extensions.js';
7
>
import { Emitter } from '../../../../base/common/event.js';
8
>
import * as path from '../../../../base/common/path.js';
9
>
import { Disposable, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
10
>
import { promiseWithResolvers } from '../../../../base/common/async.js';
11
>
12
>
export class DeltaExtensionsResult {
13
>
constructor(
14
public readonly versionId: number,
15
public readonly removedDueToLooping: IExtensionDescription[]
16
) { }
18
>
19
>
export interface IReadOnlyExtensionDescriptionRegistry {
20
>
containsActivationEvent(activationEvent: string): boolean;
21
>
containsExtension(extensionId: ExtensionIdentifier): boolean;
22
>
getExtensionDescriptionsForActivationEvent(activationEvent: string): IExtensionDescription[];
23
>
getAllExtensionDescriptions(): IExtensionDescription[];
24
>
getExtensionDescription(extensionId: ExtensionIdentifier | string): IExtensionDescription | undefined;
25
>
getExtensionDescriptionByUUID(uuid: string): IExtensionDescription | undefined;
26
>
getExtensionDescriptionByIdOrUUID(extensionId: ExtensionIdentifier | string, uuid: string | undefined): IExtensionDescription | undefined;
27
>
}
28
>
29
>
export class ExtensionDescriptionRegistry extends Disposable implements IReadOnlyExtensionDescriptionRegistry {
30
>
31
>
public static isHostExtension(extensionId: ExtensionIdentifier | string, myRegistry: ExtensionDescriptionRegistry, globalRegistry: ExtensionDescriptionRegistry): boolean {
32
>
if (myRegistry.getExtensionDescription(extensionId)) {
33
>
// I have this extension
34
>
return false;
35
>
}
36
const extensionDescription = globalRegistry.getExtensionDescription(extensionId);
37
if (!extensionDescription) {