Path: blob/main/src/vs/platform/extensionManagement/common/extensionGalleryManifest.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 { Event } from '../../../base/common/event.js';6import { createDecorator } from '../../instantiation/common/instantiation.js';78export const enum ExtensionGalleryResourceType {9ExtensionQueryService = 'ExtensionQueryService',10ExtensionLatestVersionUri = 'ExtensionLatestVersionUriTemplate',11ExtensionStatisticsUri = 'ExtensionStatisticsUriTemplate',12WebExtensionStatisticsUri = 'WebExtensionStatisticsUriTemplate',13PublisherViewUri = 'PublisherViewUriTemplate',14ExtensionDetailsViewUri = 'ExtensionDetailsViewUriTemplate',15ExtensionRatingViewUri = 'ExtensionRatingViewUriTemplate',16ExtensionResourceUri = 'ExtensionResourceUriTemplate',17ContactSupportUri = 'ContactSupportUri',18}1920export const enum Flag {21None = 'None',22IncludeVersions = 'IncludeVersions',23IncludeFiles = 'IncludeFiles',24IncludeCategoryAndTags = 'IncludeCategoryAndTags',25IncludeSharedAccounts = 'IncludeSharedAccounts',26IncludeVersionProperties = 'IncludeVersionProperties',27ExcludeNonValidated = 'ExcludeNonValidated',28IncludeInstallationTargets = 'IncludeInstallationTargets',29IncludeAssetUri = 'IncludeAssetUri',30IncludeStatistics = 'IncludeStatistics',31IncludeLatestVersionOnly = 'IncludeLatestVersionOnly',32Unpublished = 'Unpublished',33IncludeNameConflictInfo = 'IncludeNameConflictInfo',34IncludeLatestPrereleaseAndStableVersionOnly = 'IncludeLatestPrereleaseAndStableVersionOnly',35}3637export type ExtensionGalleryManifestResource = {38readonly id: string;39readonly type: string;40};4142export type ExtensionQueryCapabilityValue = {43readonly name: string;44readonly value: number;45};4647export interface IExtensionGalleryManifest {48readonly version: string;49readonly resources: readonly ExtensionGalleryManifestResource[];50readonly capabilities: {51readonly extensionQuery: {52readonly filtering?: readonly ExtensionQueryCapabilityValue[];53readonly sorting?: readonly ExtensionQueryCapabilityValue[];54readonly flags?: readonly ExtensionQueryCapabilityValue[];55};56readonly signing?: {57readonly allPublicRepositorySigned: boolean;58readonly allPrivateRepositorySigned?: boolean;59};60readonly extensions?: {61readonly includePublicExtensions?: boolean;62readonly includePrivateExtensions?: boolean;63};64};65}6667export const enum ExtensionGalleryManifestStatus {68Available = 'available',69RequiresSignIn = 'requiresSignIn',70AccessDenied = 'accessDenied',71Unavailable = 'unavailable'72}7374export const IExtensionGalleryManifestService = createDecorator<IExtensionGalleryManifestService>('IExtensionGalleryManifestService');7576export interface IExtensionGalleryManifestService {77readonly _serviceBrand: undefined;7879readonly extensionGalleryManifestStatus: ExtensionGalleryManifestStatus;80readonly onDidChangeExtensionGalleryManifestStatus: Event<ExtensionGalleryManifestStatus>;81readonly onDidChangeExtensionGalleryManifest: Event<IExtensionGalleryManifest | null>;82getExtensionGalleryManifest(): Promise<IExtensionGalleryManifest | null>;83}8485export function getExtensionGalleryManifestResourceUri(manifest: IExtensionGalleryManifest, type: string): string | undefined {86const [name, version] = type.split('/');87for (const resource of manifest.resources) {88const [r, v] = resource.type.split('/');89if (r !== name) {90continue;91}92if (!version || v === version) {93return resource.id;94}95break;96}97return undefined;98}99100export const ExtensionGalleryServiceUrlConfigKey = 'extensions.gallery.serviceUrl';101102103