diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts index d11ecac3442..3578bf1bd0b 100644 --- a/build/lib/extensions.ts +++ b/build/lib/extensions.ts @@ -263,19 +263,38 @@ const webBuiltInExtensions: IBuiltInExtension[] = productJson.webBuiltInExtensio type ExtensionKind = 'ui' | 'workspace' | 'web'; interface IExtensionManifest { - main: string; - browser: string; + main?: string; + browser?: string; extensionKind?: ExtensionKind | ExtensionKind[]; + extensionPack?: string[]; + extensionDependencies?: string[]; + contributes?: { [id: string]: any }; } /** * Loosely based on `getExtensionKind` from `src/vs/workbench/services/extensions/common/extensionManifestPropertiesService.ts` */ function isWebExtension(manifest: IExtensionManifest): boolean { + if (Boolean(manifest.browser)) { + return true; + } + if (Boolean(manifest.main)) { + return false; + } + // neither browser nor main if (typeof manifest.extensionKind !== 'undefined') { const extensionKind = Array.isArray(manifest.extensionKind) ? manifest.extensionKind : [manifest.extensionKind]; - return (extensionKind.indexOf('web') >= 0); + if (extensionKind.indexOf('web') >= 0) { + return true; + } } - return (!Boolean(manifest.main) || Boolean(manifest.browser)); + if (typeof manifest.contributes !== 'undefined') { + for (const id of ['debuggers', 'terminal', 'typescriptServerPlugins']) { + if (manifest.contributes.hasOwnProperty(id)) { + return false; + } + } + } + return true; } export function packageLocalExtensionsStream(forWeb: boolean): Stream {