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 { Event } from '../../../base/common/event.js';
7
>
import { createDecorator } from '../../instantiation/common/instantiation.js';
8
>
9
>
export const enum ExtensionGalleryResourceType {
10
>
ExtensionQueryService = 'ExtensionQueryService',
11
>
ExtensionLatestVersionUri = 'ExtensionLatestVersionUriTemplate',
12
>
ExtensionStatisticsUri = 'ExtensionStatisticsUriTemplate',
13
>
PublisherViewUri = 'PublisherViewUriTemplate',
14
>
ExtensionDetailsViewUri = 'ExtensionDetailsViewUriTemplate',
15
>
ExtensionRatingViewUri = 'ExtensionRatingViewUriTemplate',
16
>
ExtensionResourceUri = 'ExtensionResourceUriTemplate',
17
>
ContactSupportUri = 'ContactSupportUri',
18
>
}
19
>
20
>
export const enum Flag {
21
>
None = 'None',
22
>
IncludeVersions = 'IncludeVersions',
23
>
IncludeFiles = 'IncludeFiles',
24
>
IncludeCategoryAndTags = 'IncludeCategoryAndTags',
25
>
IncludeSharedAccounts = 'IncludeSharedAccounts',
26
>
IncludeVersionProperties = 'IncludeVersionProperties',
27
>
ExcludeNonValidated = 'ExcludeNonValidated',
28
>
IncludeInstallationTargets = 'IncludeInstallationTargets',
29
>
IncludeAssetUri = 'IncludeAssetUri',
30
>
IncludeStatistics = 'IncludeStatistics',
31
>
IncludeLatestVersionOnly = 'IncludeLatestVersionOnly',
32
>
Unpublished = 'Unpublished',
33
>
IncludeNameConflictInfo = 'IncludeNameConflictInfo',
34
>
IncludeLatestPrereleaseAndStableVersionOnly = 'IncludeLatestPrereleaseAndStableVersionOnly',
35
>
}
36
>
37
>
export type ExtensionGalleryManifestResource = {
38
>
readonly id: string;
39
>
readonly type: string;
40
>
};
41
>
42
>
export type ExtensionQueryCapabilityValue = {
43
>
readonly name: string;
44
>
readonly value: number;
45
>
};
46
>
47
>
export interface IExtensionGalleryManifest {
48
>
readonly version: string;
49
>
readonly resources: readonly ExtensionGalleryManifestResource[];
50
>
readonly capabilities: {
51
>
readonly extensionQuery: {
52
>
readonly filtering?: readonly ExtensionQueryCapabilityValue[];
53
>
readonly sorting?: readonly ExtensionQueryCapabilityValue[];
54
>
readonly flags?: readonly ExtensionQueryCapabilityValue[];
55
>
};
56
>
readonly signing?: {
57
>
readonly allPublicRepositorySigned: boolean;
58
>
readonly allPrivateRepositorySigned?: boolean;
59
>
};
60
>
readonly extensions?: {
61
>
readonly includePublicExtensions?: boolean;
62
>
readonly includePrivateExtensions?: boolean;
63
>
};
64
>
};
65
>
}
66
>
67
>
export const enum ExtensionGalleryManifestStatus {
68
>
Available = 'available',
69
>
RequiresSignIn = 'requiresSignIn',
70
>
AccessDenied = 'accessDenied',
71
>
Unavailable = 'unavailable'
72
>
}
73
>
74
>
export const IExtensionGalleryManifestService = createDecorator<IExtensionGalleryManifestService>('IExtensionGalleryManifestService');
75
>
76
>
export interface IExtensionGalleryManifestService {
77
>
readonly _serviceBrand: undefined;
78
>
79
>
readonly extensionGalleryManifestStatus: ExtensionGalleryManifestStatus;
80
>
readonly onDidChangeExtensionGalleryManifestStatus: Event<ExtensionGalleryManifestStatus>;
81
>
readonly onDidChangeExtensionGalleryManifest: Event<IExtensionGalleryManifest | null>;
82
>
getExtensionGalleryManifest(): Promise<IExtensionGalleryManifest | null>;
83
>
}
84
>
85
>
export function getExtensionGalleryManifestResourceUri(manifest: IExtensionGalleryManifest, type: string): string | undefined {
86
const [name, version] = type.split('/');
87
for (const resource of manifest.resources) {