function deduceExtensionKinds()

in src/package.ts [1023:1054]


function deduceExtensionKinds(manifest: Manifest): ExtensionKind[] {
	// Not an UI extension if it has main
	if (manifest.main) {
		if (manifest.browser) {
			return ['workspace', 'web'];
		}
		return ['workspace'];
	}

	if (manifest.browser) {
		return ['web'];
	}

	let result: ExtensionKind[] = ['ui', 'workspace', 'web'];

	const isNonEmptyArray = (obj: any) => Array.isArray(obj) && obj.length > 0;
	// Extension pack defaults to workspace,web extensionKind
	if (isNonEmptyArray(manifest.extensionPack) || isNonEmptyArray(manifest.extensionDependencies)) {
		result = ['workspace', 'web'];
	}

	if (manifest.contributes) {
		for (const contribution of Object.keys(manifest.contributes)) {
			const supportedExtensionKinds = extensionPointExtensionKindsMap.get(contribution);
			if (supportedExtensionKinds) {
				result = result.filter(extensionKind => supportedExtensionKinds.indexOf(extensionKind) !== -1);
			}
		}
	}

	return result;
}