diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index 065219a2885..70d25a5485e 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -256,7 +256,6 @@ export interface ILocalExtension extends IExtension { installedTimestamp?: number; isPreReleaseVersion: boolean; preRelease: boolean; - targetPlatform: TargetPlatform; } export const enum SortBy { diff --git a/src/vs/platform/extensionManagement/node/extensionsScanner.ts b/src/vs/platform/extensionManagement/node/extensionsScanner.ts index 5ca4c56bcfd..03d75a5e8ff 100644 --- a/src/vs/platform/extensionManagement/node/extensionsScanner.ts +++ b/src/vs/platform/extensionManagement/node/extensionsScanner.ts @@ -30,7 +30,7 @@ import { IProductService } from 'vs/platform/product/common/productService'; export type ILocalExtensionManifest = IExtensionManifest & { __metadata?: Metadata }; -type IRelaxedLocalExtension = Omit & { isBuiltin: boolean }; +type IRelaxedLocalExtension = Omit & { isBuiltin: boolean; targetPlatform: TargetPlatform }; export class ExtensionsScanner extends Disposable { diff --git a/src/vs/platform/extensions/common/extensions.ts b/src/vs/platform/extensions/common/extensions.ts index 82086430a00..a1eae1bb07d 100644 --- a/src/vs/platform/extensions/common/extensions.ts +++ b/src/vs/platform/extensions/common/extensions.ts @@ -315,6 +315,7 @@ export interface IExtension { readonly identifier: IExtensionIdentifier; readonly manifest: IExtensionManifest; readonly location: URI; + readonly targetPlatform: TargetPlatform; readonly readmeUrl?: URI; readonly changelogUrl?: URI; } @@ -377,7 +378,7 @@ export class ExtensionIdentifier { export interface IExtensionDescription extends IExtensionManifest { readonly identifier: ExtensionIdentifier; readonly uuid?: string; - readonly targetPlatform?: TargetPlatform; + readonly targetPlatform: TargetPlatform; readonly isBuiltin: boolean; readonly isUserBuiltin: boolean; readonly isUnderDevelopment: boolean; diff --git a/src/vs/workbench/api/test/common/extHostExtensionActivator.test.ts b/src/vs/workbench/api/test/common/extHostExtensionActivator.test.ts index 18850a98dd2..ddaaa76bb35 100644 --- a/src/vs/workbench/api/test/common/extHostExtensionActivator.test.ts +++ b/src/vs/workbench/api/test/common/extHostExtensionActivator.test.ts @@ -6,7 +6,7 @@ import * as assert from 'assert'; import { timeout } from 'vs/base/common/async'; import { URI } from 'vs/base/common/uri'; -import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionDescription, TargetPlatform } from 'vs/platform/extensions/common/extensions'; import { NullLogService } from 'vs/platform/log/common/log'; import { ActivatedExtension, EmptyExtension, ExtensionActivationTimes, ExtensionsActivator, IExtensionsActivatorHost } from 'vs/workbench/api/common/extHostExtensionActivator'; import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry'; @@ -261,6 +261,7 @@ suite('ExtensionsActivator', () => { isUserBuiltin: false, activationEvents, main: 'index.js', + targetPlatform: TargetPlatform.UNDEFINED, extensionDependencies: deps.map(d => d.value) }; } diff --git a/src/vs/workbench/contrib/debug/test/node/debugger.test.ts b/src/vs/workbench/contrib/debug/test/node/debugger.test.ts index 8f1278c1cd6..72ff6b21db2 100644 --- a/src/vs/workbench/contrib/debug/test/node/debugger.test.ts +++ b/src/vs/workbench/contrib/debug/test/node/debugger.test.ts @@ -12,7 +12,7 @@ import { TestConfigurationService } from 'vs/platform/configuration/test/common/ import { URI } from 'vs/base/common/uri'; import { ExecutableDebugAdapter } from 'vs/workbench/contrib/debug/node/debugAdapter'; import { TestTextResourcePropertiesService } from 'vs/editor/test/common/services/testTextResourcePropertiesService'; -import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionDescription, TargetPlatform } from 'vs/platform/extensions/common/extensions'; suite('Debug - Debugger', () => { @@ -58,6 +58,7 @@ suite('Debug - Debugger', () => { isUserBuiltin: false, isUnderDevelopment: false, engines: null!, + targetPlatform: TargetPlatform.UNDEFINED, contributes: { 'debuggers': [ debuggerContribution @@ -76,6 +77,7 @@ suite('Debug - Debugger', () => { isUserBuiltin: false, isUnderDevelopment: false, engines: null!, + targetPlatform: TargetPlatform.UNDEFINED, contributes: { 'debuggers': [ { @@ -100,6 +102,7 @@ suite('Debug - Debugger', () => { isUserBuiltin: false, isUnderDevelopment: false, engines: null!, + targetPlatform: TargetPlatform.UNDEFINED, contributes: { 'debuggers': [ { diff --git a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts index 5eb9d09bf2e..c22e2718d6a 100644 --- a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts +++ b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IBuiltinExtensionsScannerService, ExtensionType, IExtensionManifest, IExtension } from 'vs/platform/extensions/common/extensions'; +import { IBuiltinExtensionsScannerService, ExtensionType, IExtensionManifest, IExtension, TargetPlatform } from 'vs/platform/extensions/common/extensions'; import { isWeb } from 'vs/base/common/platform'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; @@ -57,6 +57,7 @@ export class BuiltinExtensionsScannerService implements IBuiltinExtensionsScanne manifest: e.packageNLS ? localizeManifest(e.packageJSON, e.packageNLS) : e.packageJSON, readmeUrl: e.readmePath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.readmePath) : undefined, changelogUrl: e.changelogPath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.changelogPath) : undefined, + targetPlatform: TargetPlatform.WEB, })); } } diff --git a/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts index e45603178db..6fd477d3f44 100644 --- a/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts +++ b/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts @@ -465,7 +465,8 @@ export class WebExtensionsScannerService extends Disposable implements IWebExten isBuiltin, readmeUrl: webExtension.readmeUri, changelogUrl: webExtension.changelogUri, - metadata: webExtension.metadata + metadata: webExtension.metadata, + targetPlatform: TargetPlatform.WEB }; } diff --git a/src/vs/workbench/services/extensions/common/extensionPoints.ts b/src/vs/workbench/services/extensions/common/extensionPoints.ts index 95ebdd0691f..eaca238a299 100644 --- a/src/vs/workbench/services/extensions/common/extensionPoints.ts +++ b/src/vs/workbench/services/extensions/common/extensionPoints.ts @@ -14,7 +14,7 @@ import * as types from 'vs/base/common/types'; import { URI } from 'vs/base/common/uri'; import { getGalleryExtensionId, groupByExtension, getExtensionId, ExtensionKey } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { isValidExtensionVersion } from 'vs/platform/extensions/common/extensionValidator'; -import { ExtensionIdentifier, IExtensionDescription, UNDEFINED_PUBLISHER } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionDescription, TargetPlatform, UNDEFINED_PUBLISHER } from 'vs/platform/extensions/common/extensions'; const MANIFEST_FILE = 'package.json'; @@ -133,10 +133,8 @@ class ExtensionManifestParser extends ExtensionManifestHandler { if (json.getNodeType(manifest) !== 'object') { this._error(this._absoluteFolderPath, nls.localize('jsonParseInvalidType', "Invalid manifest file {0}: Not an JSON object.", this._absoluteManifestPath)); } else if (errors.length === 0) { - if (manifest.__metadata) { - manifest.uuid = manifest.__metadata.id; - manifest.targetPlatform = manifest.__metadata.targetPlatform; - } + manifest.uuid = manifest.__metadata?.id; + manifest.targetPlatform = manifest.__metadata?.targetPlatform ?? TargetPlatform.UNDEFINED; manifest.isUserBuiltin = !!manifest.__metadata?.isBuiltin; delete manifest.__metadata; return manifest; @@ -366,6 +364,7 @@ class ExtensionManifestNLSReplacer extends ExtensionManifestHandler { export interface IRelaxedExtensionDescription { id: string; uuid?: string; + targetPlatform: TargetPlatform; identifier: ExtensionIdentifier; name: string; version: string; diff --git a/src/vs/workbench/services/extensions/common/extensions.ts b/src/vs/workbench/services/extensions/common/extensions.ts index 6398b447a1a..20be37510fc 100644 --- a/src/vs/workbench/services/extensions/common/extensions.ts +++ b/src/vs/workbench/services/extensions/common/extensions.ts @@ -340,6 +340,7 @@ export function toExtension(extensionDescription: IExtensionDescription): IExten identifier: { id: getGalleryExtensionId(extensionDescription.publisher, extensionDescription.name), uuid: extensionDescription.uuid }, manifest: extensionDescription, location: extensionDescription.extensionLocation, + targetPlatform: extensionDescription.targetPlatform, }; } @@ -351,7 +352,8 @@ export function toExtensionDescription(extension: IExtension, isUnderDevelopment isUnderDevelopment: !!isUnderDevelopment, extensionLocation: extension.location, ...extension.manifest, - uuid: extension.identifier.uuid + uuid: extension.identifier.uuid, + targetPlatform: extension.targetPlatform }; }