Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/extensionManagement/common/extensionGalleryManifest.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 { 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
WebExtensionStatisticsUri = 'WebExtensionStatisticsUriTemplate',
14
PublisherViewUri = 'PublisherViewUriTemplate',
15
ExtensionDetailsViewUri = 'ExtensionDetailsViewUriTemplate',
16
ExtensionRatingViewUri = 'ExtensionRatingViewUriTemplate',
17
ExtensionResourceUri = 'ExtensionResourceUriTemplate',
18
ContactSupportUri = 'ContactSupportUri',
19
}
20
21
export const enum Flag {
22
None = 'None',
23
IncludeVersions = 'IncludeVersions',
24
IncludeFiles = 'IncludeFiles',
25
IncludeCategoryAndTags = 'IncludeCategoryAndTags',
26
IncludeSharedAccounts = 'IncludeSharedAccounts',
27
IncludeVersionProperties = 'IncludeVersionProperties',
28
ExcludeNonValidated = 'ExcludeNonValidated',
29
IncludeInstallationTargets = 'IncludeInstallationTargets',
30
IncludeAssetUri = 'IncludeAssetUri',
31
IncludeStatistics = 'IncludeStatistics',
32
IncludeLatestVersionOnly = 'IncludeLatestVersionOnly',
33
Unpublished = 'Unpublished',
34
IncludeNameConflictInfo = 'IncludeNameConflictInfo',
35
IncludeLatestPrereleaseAndStableVersionOnly = 'IncludeLatestPrereleaseAndStableVersionOnly',
36
}
37
38
export type ExtensionGalleryManifestResource = {
39
readonly id: string;
40
readonly type: string;
41
};
42
43
export type ExtensionQueryCapabilityValue = {
44
readonly name: string;
45
readonly value: number;
46
};
47
48
export interface IExtensionGalleryManifest {
49
readonly version: string;
50
readonly resources: readonly ExtensionGalleryManifestResource[];
51
readonly capabilities: {
52
readonly extensionQuery: {
53
readonly filtering?: readonly ExtensionQueryCapabilityValue[];
54
readonly sorting?: readonly ExtensionQueryCapabilityValue[];
55
readonly flags?: readonly ExtensionQueryCapabilityValue[];
56
};
57
readonly signing?: {
58
readonly allPublicRepositorySigned: boolean;
59
readonly allPrivateRepositorySigned?: boolean;
60
};
61
readonly extensions?: {
62
readonly includePublicExtensions?: boolean;
63
readonly includePrivateExtensions?: boolean;
64
};
65
};
66
}
67
68
export const enum ExtensionGalleryManifestStatus {
69
Available = 'available',
70
RequiresSignIn = 'requiresSignIn',
71
AccessDenied = 'accessDenied',
72
Unavailable = 'unavailable'
73
}
74
75
export const IExtensionGalleryManifestService = createDecorator<IExtensionGalleryManifestService>('IExtensionGalleryManifestService');
76
77
export interface IExtensionGalleryManifestService {
78
readonly _serviceBrand: undefined;
79
80
readonly extensionGalleryManifestStatus: ExtensionGalleryManifestStatus;
81
readonly onDidChangeExtensionGalleryManifestStatus: Event<ExtensionGalleryManifestStatus>;
82
readonly onDidChangeExtensionGalleryManifest: Event<IExtensionGalleryManifest | null>;
83
getExtensionGalleryManifest(): Promise<IExtensionGalleryManifest | null>;
84
}
85
86
export function getExtensionGalleryManifestResourceUri(manifest: IExtensionGalleryManifest, type: string): string | undefined {
87
const [name, version] = type.split('/');
88
for (const resource of manifest.resources) {
89
const [r, v] = resource.type.split('/');
90
if (r !== name) {
91
continue;
92
}
93
if (!version || v === version) {
94
return resource.id;
95
}
96
break;
97
}
98
return undefined;
99
}
100
101
export const ExtensionGalleryServiceUrlConfigKey = 'extensions.gallery.serviceUrl';
102
103