sussudio
Version:
An unofficial VS Code Internal API
196 lines (195 loc) • 10.8 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { localize } from "../../../nls.mjs";
import { createDecorator } from "../../instantiation/common/instantiation.mjs";
export const EXTENSION_IDENTIFIER_PATTERN = '^([a-z0-9A-Z][a-z0-9-A-Z]*)\\.([a-z0-9A-Z][a-z0-9-A-Z]*)$';
export const EXTENSION_IDENTIFIER_REGEX = new RegExp(EXTENSION_IDENTIFIER_PATTERN);
export const WEB_EXTENSION_TAG = '__web_extension';
export function TargetPlatformToString(targetPlatform) {
switch (targetPlatform) {
case "win32-x64" /* TargetPlatform.WIN32_X64 */: return 'Windows 64 bit';
case "win32-ia32" /* TargetPlatform.WIN32_IA32 */: return 'Windows 32 bit';
case "win32-arm64" /* TargetPlatform.WIN32_ARM64 */: return 'Windows ARM';
case "linux-x64" /* TargetPlatform.LINUX_X64 */: return 'Linux 64 bit';
case "linux-arm64" /* TargetPlatform.LINUX_ARM64 */: return 'Linux ARM 64';
case "linux-armhf" /* TargetPlatform.LINUX_ARMHF */: return 'Linux ARM';
case "alpine-x64" /* TargetPlatform.ALPINE_X64 */: return 'Alpine Linux 64 bit';
case "alpine-arm64" /* TargetPlatform.ALPINE_ARM64 */: return 'Alpine ARM 64';
case "darwin-x64" /* TargetPlatform.DARWIN_X64 */: return 'Mac';
case "darwin-arm64" /* TargetPlatform.DARWIN_ARM64 */: return 'Mac Silicon';
case "web" /* TargetPlatform.WEB */: return 'Web';
case "universal" /* TargetPlatform.UNIVERSAL */: return "universal" /* TargetPlatform.UNIVERSAL */;
case "unknown" /* TargetPlatform.UNKNOWN */: return "unknown" /* TargetPlatform.UNKNOWN */;
case "undefined" /* TargetPlatform.UNDEFINED */: return "undefined" /* TargetPlatform.UNDEFINED */;
}
}
export function toTargetPlatform(targetPlatform) {
switch (targetPlatform) {
case "win32-x64" /* TargetPlatform.WIN32_X64 */: return "win32-x64" /* TargetPlatform.WIN32_X64 */;
case "win32-ia32" /* TargetPlatform.WIN32_IA32 */: return "win32-ia32" /* TargetPlatform.WIN32_IA32 */;
case "win32-arm64" /* TargetPlatform.WIN32_ARM64 */: return "win32-arm64" /* TargetPlatform.WIN32_ARM64 */;
case "linux-x64" /* TargetPlatform.LINUX_X64 */: return "linux-x64" /* TargetPlatform.LINUX_X64 */;
case "linux-arm64" /* TargetPlatform.LINUX_ARM64 */: return "linux-arm64" /* TargetPlatform.LINUX_ARM64 */;
case "linux-armhf" /* TargetPlatform.LINUX_ARMHF */: return "linux-armhf" /* TargetPlatform.LINUX_ARMHF */;
case "alpine-x64" /* TargetPlatform.ALPINE_X64 */: return "alpine-x64" /* TargetPlatform.ALPINE_X64 */;
case "alpine-arm64" /* TargetPlatform.ALPINE_ARM64 */: return "alpine-arm64" /* TargetPlatform.ALPINE_ARM64 */;
case "darwin-x64" /* TargetPlatform.DARWIN_X64 */: return "darwin-x64" /* TargetPlatform.DARWIN_X64 */;
case "darwin-arm64" /* TargetPlatform.DARWIN_ARM64 */: return "darwin-arm64" /* TargetPlatform.DARWIN_ARM64 */;
case "web" /* TargetPlatform.WEB */: return "web" /* TargetPlatform.WEB */;
case "universal" /* TargetPlatform.UNIVERSAL */: return "universal" /* TargetPlatform.UNIVERSAL */;
default: return "unknown" /* TargetPlatform.UNKNOWN */;
}
}
export function getTargetPlatform(platform, arch) {
switch (platform) {
case 3 /* Platform.Windows */:
if (arch === 'x64') {
return "win32-x64" /* TargetPlatform.WIN32_X64 */;
}
if (arch === 'ia32') {
return "win32-ia32" /* TargetPlatform.WIN32_IA32 */;
}
if (arch === 'arm64') {
return "win32-arm64" /* TargetPlatform.WIN32_ARM64 */;
}
return "unknown" /* TargetPlatform.UNKNOWN */;
case 2 /* Platform.Linux */:
if (arch === 'x64') {
return "linux-x64" /* TargetPlatform.LINUX_X64 */;
}
if (arch === 'arm64') {
return "linux-arm64" /* TargetPlatform.LINUX_ARM64 */;
}
if (arch === 'arm') {
return "linux-armhf" /* TargetPlatform.LINUX_ARMHF */;
}
return "unknown" /* TargetPlatform.UNKNOWN */;
case 'alpine':
if (arch === 'x64') {
return "alpine-x64" /* TargetPlatform.ALPINE_X64 */;
}
if (arch === 'arm64') {
return "alpine-arm64" /* TargetPlatform.ALPINE_ARM64 */;
}
return "unknown" /* TargetPlatform.UNKNOWN */;
case 1 /* Platform.Mac */:
if (arch === 'x64') {
return "darwin-x64" /* TargetPlatform.DARWIN_X64 */;
}
if (arch === 'arm64') {
return "darwin-arm64" /* TargetPlatform.DARWIN_ARM64 */;
}
return "unknown" /* TargetPlatform.UNKNOWN */;
case 0 /* Platform.Web */: return "web" /* TargetPlatform.WEB */;
}
}
export function isNotWebExtensionInWebTargetPlatform(allTargetPlatforms, productTargetPlatform) {
// Not a web extension in web target platform
return productTargetPlatform === "web" /* TargetPlatform.WEB */ && !allTargetPlatforms.includes("web" /* TargetPlatform.WEB */);
}
export function isTargetPlatformCompatible(extensionTargetPlatform, allTargetPlatforms, productTargetPlatform) {
// Not compatible when extension is not a web extension in web target platform
if (isNotWebExtensionInWebTargetPlatform(allTargetPlatforms, productTargetPlatform)) {
return false;
}
// Compatible when extension target platform is not defined
if (extensionTargetPlatform === "undefined" /* TargetPlatform.UNDEFINED */) {
return true;
}
// Compatible when extension target platform is universal
if (extensionTargetPlatform === "universal" /* TargetPlatform.UNIVERSAL */) {
return true;
}
// Not compatible when extension target platform is unknown
if (extensionTargetPlatform === "unknown" /* TargetPlatform.UNKNOWN */) {
return false;
}
// Compatible when extension and product target platforms matches
if (extensionTargetPlatform === productTargetPlatform) {
return true;
}
// Fallback
const fallbackTargetPlatforms = getFallbackTargetPlarforms(productTargetPlatform);
return fallbackTargetPlatforms.includes(extensionTargetPlatform);
}
export function getFallbackTargetPlarforms(targetPlatform) {
switch (targetPlatform) {
case "win32-x64" /* TargetPlatform.WIN32_X64 */: return ["win32-ia32" /* TargetPlatform.WIN32_IA32 */];
case "win32-arm64" /* TargetPlatform.WIN32_ARM64 */: return ["win32-ia32" /* TargetPlatform.WIN32_IA32 */];
}
return [];
}
export function isIExtensionIdentifier(thing) {
return thing
&& typeof thing === 'object'
&& typeof thing.id === 'string'
&& (!thing.uuid || typeof thing.uuid === 'string');
}
export var SortBy;
(function (SortBy) {
SortBy[SortBy["NoneOrRelevance"] = 0] = "NoneOrRelevance";
SortBy[SortBy["LastUpdatedDate"] = 1] = "LastUpdatedDate";
SortBy[SortBy["Title"] = 2] = "Title";
SortBy[SortBy["PublisherName"] = 3] = "PublisherName";
SortBy[SortBy["InstallCount"] = 4] = "InstallCount";
SortBy[SortBy["PublishedDate"] = 10] = "PublishedDate";
SortBy[SortBy["AverageRating"] = 6] = "AverageRating";
SortBy[SortBy["WeightedRating"] = 12] = "WeightedRating";
})(SortBy || (SortBy = {}));
export var SortOrder;
(function (SortOrder) {
SortOrder[SortOrder["Default"] = 0] = "Default";
SortOrder[SortOrder["Ascending"] = 1] = "Ascending";
SortOrder[SortOrder["Descending"] = 2] = "Descending";
})(SortOrder || (SortOrder = {}));
export var StatisticType;
(function (StatisticType) {
StatisticType["Install"] = "install";
StatisticType["Uninstall"] = "uninstall";
})(StatisticType || (StatisticType = {}));
export var InstallOperation;
(function (InstallOperation) {
InstallOperation[InstallOperation["None"] = 1] = "None";
InstallOperation[InstallOperation["Install"] = 2] = "Install";
InstallOperation[InstallOperation["Update"] = 3] = "Update";
InstallOperation[InstallOperation["Migrate"] = 4] = "Migrate";
})(InstallOperation || (InstallOperation = {}));
export const IExtensionGalleryService = createDecorator('extensionGalleryService');
export var ExtensionManagementErrorCode;
(function (ExtensionManagementErrorCode) {
ExtensionManagementErrorCode["Unsupported"] = "Unsupported";
ExtensionManagementErrorCode["Deprecated"] = "Deprecated";
ExtensionManagementErrorCode["Malicious"] = "Malicious";
ExtensionManagementErrorCode["Incompatible"] = "Incompatible";
ExtensionManagementErrorCode["IncompatiblePreRelease"] = "IncompatiblePreRelease";
ExtensionManagementErrorCode["IncompatibleTargetPlatform"] = "IncompatibleTargetPlatform";
ExtensionManagementErrorCode["ReleaseVersionNotFound"] = "ReleaseVersionNotFound";
ExtensionManagementErrorCode["Invalid"] = "Invalid";
ExtensionManagementErrorCode["Download"] = "Download";
ExtensionManagementErrorCode["Extract"] = "Extract";
ExtensionManagementErrorCode["Delete"] = "Delete";
ExtensionManagementErrorCode["Rename"] = "Rename";
ExtensionManagementErrorCode["CorruptZip"] = "CorruptZip";
ExtensionManagementErrorCode["IncompleteZip"] = "IncompleteZip";
ExtensionManagementErrorCode["Internal"] = "Internal";
ExtensionManagementErrorCode["Signature"] = "Signature";
})(ExtensionManagementErrorCode || (ExtensionManagementErrorCode = {}));
export class ExtensionManagementError extends Error {
code;
constructor(message, code) {
super(message);
this.code = code;
this.name = code;
}
}
export const IExtensionManagementService = createDecorator('extensionManagementService');
export const DISABLED_EXTENSIONS_STORAGE_PATH = 'extensionsIdentifiers/disabled';
export const ENABLED_EXTENSIONS_STORAGE_PATH = 'extensionsIdentifiers/enabled';
export const IGlobalExtensionEnablementService = createDecorator('IGlobalExtensionEnablementService');
export const IExtensionTipsService = createDecorator('IExtensionTipsService');
export const ExtensionsLabel = localize('extensions', "Extensions");
export const ExtensionsLocalizedLabel = { value: ExtensionsLabel, original: 'Extensions' };
export const PreferencesLabel = localize('preferences', "Preferences");
export const PreferencesLocalizedLabel = { value: PreferencesLabel, original: 'Preferences' };