Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/extensionManagement/common/extensionGalleryManifest.ts
5311 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
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) {
88
const [r, v] = resource.type.split('/');
89
if (r !== name) {
90
continue;
91
}
92
if (!version || v === version) {
93
return resource.id;
94
}
95
break;
96
}
97
return undefined;
98
}
99
100
export const ExtensionGalleryServiceUrlConfigKey = 'extensions.gallery.serviceUrl';
101
102