/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; import nls = require('vs/nls'); import { TPromise } from 'vs/base/common/winjs.base'; import Event from 'vs/base/common/event'; import { IPager } from 'vs/base/common/paging'; import { createDecorator, ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation'; export interface IExtensionManifest { name: string; publisher: string; version: string; engines: { vscode: string }; displayName?: string; description?: string; main?: string; icon?: string; } export interface IGalleryVersion { version: string; date: string; manifestUrl: string; readmeUrl: string; downloadUrl: string; iconUrl: string; downloadHeaders: { [key: string]: string; }; } export interface IExtensionIdentity { name: string; publisher: string; } export interface IGalleryExtension { id: string; name: string; displayName: string; publisherId: string; publisher: string; publisherDisplayName: string; description: string; installCount: number; versions: IGalleryVersion[]; } export interface IGalleryMetadata { id: string; publisherId: string; publisherDisplayName: string; } export interface ILocalExtension { id: string; manifest: IExtensionManifest; metadata: IGalleryMetadata; path: string; } export const IExtensionManagementService = createDecorator('extensionManagementService'); export const IExtensionGalleryService = createDecorator('extensionGalleryService'); export interface IQueryOptions { text?: string; ids?: string[]; pageSize?: number; } export interface IExtensionGalleryService { serviceId: ServiceIdentifier; isEnabled(): boolean; query(options?: IQueryOptions): TPromise>; } export type InstallExtensionEvent = { id: string; gallery?: IGalleryExtension; }; export type DidInstallExtensionEvent = { id: string; local?: ILocalExtension; error?: Error; }; export interface IExtensionManagementService { serviceId: ServiceIdentifier; onInstallExtension: Event; onDidInstallExtension: Event; onUninstallExtension: Event; onDidUninstallExtension: Event; install(extension: IGalleryExtension): TPromise; install(zipPath: string): TPromise; uninstall(extension: ILocalExtension): TPromise; getInstalled(includeDuplicateVersions?: boolean): TPromise; } export const IExtensionTipsService = createDecorator('extensionTipsService'); export interface IExtensionTipsService { serviceId: ServiceIdentifier; getRecommendations(): TPromise; } export const ExtensionsLabel = nls.localize('extensions', "Extensions"); export const ExtensionsChannelId = 'extensions';