mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
Load bundle for web from unpkg service (#163641)
* move extensionResourceLoader service into platform * use the ExtensionResourceLoader to load translations from a language pack * do join after * missed a deletion
This commit is contained in:
committed by
GitHub
parent
28da8ed1aa
commit
f83ad50c89
+1
-1
@@ -6,13 +6,13 @@
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { AbstractExtensionResourceLoaderService, IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { FileAccess, Schemas } from 'vs/base/common/network';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { AbstractExtensionResourceLoaderService, IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
|
||||
class ExtensionResourceLoaderService extends AbstractExtensionResourceLoaderService {
|
||||
|
||||
+1
-1
@@ -6,13 +6,13 @@
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { AbstractExtensionResourceLoaderService, IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { asTextOrError, IRequestService } from 'vs/platform/request/common/request';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { CancellationToken } from 'vs/base/common/cancellation';
|
||||
import { AbstractExtensionResourceLoaderService, IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
|
||||
export class ExtensionResourceLoaderService extends AbstractExtensionResourceLoaderService {
|
||||
|
||||
@@ -3,21 +3,72 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { CancellationTokenSource } from 'vs/base/common/cancellation';
|
||||
import { Language } from 'vs/base/common/platform';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { ILanguagePackItem, LanguagePackBaseService } from 'vs/platform/languagePacks/common/languagePacks';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
|
||||
export class WebLanguagePacksService extends LanguagePackBaseService {
|
||||
// TODO: support builtin extensions using unpkg service
|
||||
// constructor(
|
||||
// @IExtensionResourceLoaderService extensionResourceLoaderService: IExtensionResourceLoaderService,
|
||||
// @IExtensionGalleryService extensionGalleryService: IExtensionGalleryService,
|
||||
// @ILogService private readonly logService: ILogService
|
||||
// ) {
|
||||
// super(extensionGalleryService);
|
||||
// }
|
||||
constructor(
|
||||
@IExtensionResourceLoaderService private readonly extensionResourceLoaderService: IExtensionResourceLoaderService,
|
||||
@IExtensionGalleryService extensionGalleryService: IExtensionGalleryService,
|
||||
@ILogService private readonly logService: ILogService
|
||||
) {
|
||||
super(extensionGalleryService);
|
||||
}
|
||||
|
||||
getTranslationsUri(id: string): Promise<URI | undefined> {
|
||||
return Promise.resolve(undefined);
|
||||
async getBuiltInExtensionTranslationsUri(id: string): Promise<URI | undefined> {
|
||||
|
||||
const queryTimeout = new CancellationTokenSource();
|
||||
setTimeout(() => queryTimeout.cancel(), 1000);
|
||||
|
||||
// First get the extensions that supports the language (there should only be one but just in case let's include more results)
|
||||
let result;
|
||||
try {
|
||||
result = await this.extensionGalleryService.query({
|
||||
text: `tag:"lp-${Language.value()}"`,
|
||||
pageSize: 5
|
||||
}, queryTimeout.token);
|
||||
} catch (err) {
|
||||
this.logService.error(err);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const languagePackExtensions = result.firstPage.find(e => e.properties.localizedLanguages?.length);
|
||||
if (!languagePackExtensions) {
|
||||
this.logService.trace(`No language pack found for language ${Language.value()}`);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Then get the manifest for that extension
|
||||
const manifestTimeout = new CancellationTokenSource();
|
||||
setTimeout(() => queryTimeout.cancel(), 1000);
|
||||
const manifest = await this.extensionGalleryService.getManifest(languagePackExtensions, manifestTimeout.token);
|
||||
|
||||
// Find the translation from the language pack
|
||||
const localization = manifest?.contributes?.localizations?.find(l => l.languageId === Language.value());
|
||||
const translation = localization?.translations.find(t => t.id === id);
|
||||
if (!translation) {
|
||||
this.logService.trace(`No translation found for id '${id}, in ${manifest?.name}`);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// get the resource uri and return it
|
||||
const uri = this.extensionResourceLoaderService.getExtensionGalleryResourceURL({
|
||||
// If translation is defined then manifest should have been defined.
|
||||
name: manifest!.name,
|
||||
publisher: manifest!.publisher,
|
||||
version: manifest!.version
|
||||
});
|
||||
if (!uri) {
|
||||
this.logService.trace('Gallery does not provide extension resources.');
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return URI.joinPath(uri, translation.path);
|
||||
}
|
||||
|
||||
// Web doesn't have a concept of language packs, so we just return an empty array
|
||||
|
||||
@@ -23,18 +23,18 @@ export interface ILanguagePackService {
|
||||
readonly _serviceBrand: undefined;
|
||||
getAvailableLanguages(): Promise<Array<ILanguagePackItem>>;
|
||||
getInstalledLanguages(): Promise<Array<ILanguagePackItem>>;
|
||||
getTranslationsUri(id: string): Promise<URI | undefined>;
|
||||
getBuiltInExtensionTranslationsUri(id: string): Promise<URI | undefined>;
|
||||
getLocale(extension: IGalleryExtension): string | undefined;
|
||||
}
|
||||
|
||||
export abstract class LanguagePackBaseService extends Disposable implements ILanguagePackService {
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
constructor(@IExtensionGalleryService private readonly extensionGalleryService: IExtensionGalleryService) {
|
||||
constructor(@IExtensionGalleryService protected readonly extensionGalleryService: IExtensionGalleryService) {
|
||||
super();
|
||||
}
|
||||
|
||||
abstract getTranslationsUri(id: string): Promise<URI | undefined>;
|
||||
abstract getBuiltInExtensionTranslationsUri(id: string): Promise<URI | undefined>;
|
||||
|
||||
abstract getInstalledLanguages(): Promise<Array<ILanguagePackItem>>;
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import { areSameExtensions } from 'vs/platform/extensionManagement/common/extens
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { ILocalizationContribution } from 'vs/platform/extensions/common/extensions';
|
||||
import { ILanguagePackItem, LanguagePackBaseService } from 'vs/platform/languagePacks/common/languagePacks';
|
||||
import { locale } from 'vs/base/common/platform';
|
||||
import { Language } from 'vs/base/common/platform';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
|
||||
interface ILanguagePack {
|
||||
@@ -50,11 +50,11 @@ export class NativeLanguagePackService extends LanguagePackBaseService {
|
||||
});
|
||||
}
|
||||
|
||||
async getTranslationsUri(id: string): Promise<URI | undefined> {
|
||||
async getBuiltInExtensionTranslationsUri(id: string): Promise<URI | undefined> {
|
||||
const packs = await this.cache.getLanguagePacks();
|
||||
const pack = packs[locale!];
|
||||
const pack = packs[Language.value()];
|
||||
if (!pack) {
|
||||
this.logService.warn(`No language pack found for ${locale}`);
|
||||
this.logService.warn(`No language pack found for ${Language.value()}`);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ export class MainThreadLocalization extends Disposable implements MainThreadLoca
|
||||
|
||||
async $fetchBuiltInBundleUri(id: string): Promise<URI | undefined> {
|
||||
try {
|
||||
const uri = await this.languagePackService.getTranslationsUri(id);
|
||||
const uri = await this.languagePackService.getBuiltInExtensionTranslationsUri(id);
|
||||
return uri;
|
||||
} catch (e) {
|
||||
return undefined;
|
||||
|
||||
@@ -16,7 +16,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { ITextMateService } from 'vs/workbench/services/textMate/browser/textMate';
|
||||
import { getParseErrorMessage } from 'vs/base/common/jsonErrorMessages';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { hash } from 'vs/base/common/hash';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import { URI } from 'vs/base/common/uri';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IdleValue } from 'vs/base/common/async';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { relativePath } from 'vs/base/common/resources';
|
||||
import { isObject } from 'vs/base/common/types';
|
||||
import { Iterable } from 'vs/base/common/iterator';
|
||||
|
||||
@@ -22,7 +22,7 @@ import { Snippet, SnippetFile, SnippetSource } from 'vs/workbench/contrib/snippe
|
||||
import { ExtensionsRegistry, IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||
import { languagesExtPoint } from 'vs/workbench/services/language/common/languageService';
|
||||
import { SnippetCompletionProvider } from './snippetCompletionProvider';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { ResourceMap } from 'vs/base/common/map';
|
||||
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
|
||||
import { isStringArray } from 'vs/base/common/types';
|
||||
|
||||
@@ -30,7 +30,7 @@ import { Codicon } from 'vs/base/common/codicons';
|
||||
import { registerIcon } from 'vs/platform/theme/common/iconRegistry';
|
||||
import { ThemeIcon } from 'vs/platform/theme/common/themeService';
|
||||
import { Emitter } from 'vs/base/common/event';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/
|
||||
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { FileAccess } from 'vs/base/common/network';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { ITranslations, localizeManifest } from 'vs/platform/extensionManagement/common/extensionNls';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import { isString } from 'vs/base/common/types';
|
||||
import { getErrorMessage } from 'vs/base/common/errors';
|
||||
import { ResourceMap } from 'vs/base/common/map';
|
||||
import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { Action2, registerAction2 } from 'vs/platform/actions/common/actions';
|
||||
import { Categories } from 'vs/platform/action/common/actionCommonCategories';
|
||||
import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys';
|
||||
|
||||
@@ -28,7 +28,7 @@ import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { IValidGrammarDefinition, IValidEmbeddedLanguagesMap, IValidTokenTypeMap } from 'vs/workbench/services/textMate/common/TMScopeRegistry';
|
||||
import { missingTMGrammarErrorMessage, TMGrammarFactory } from 'vs/workbench/services/textMate/common/TMGrammarFactory';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress';
|
||||
import { TMTokenization } from 'vs/workbench/services/textMate/common/TMTokenization';
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import { UriComponents, URI } from 'vs/base/common/uri';
|
||||
import { ContiguousMultilineTokensBuilder } from 'vs/editor/common/tokens/contiguousMultilineTokensBuilder';
|
||||
import { TMGrammarFactory } from 'vs/workbench/services/textMate/common/TMGrammarFactory';
|
||||
import { IModelContentChangedEvent } from 'vs/editor/common/textModelEvents';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
|
||||
import { IProgressService } from 'vs/platform/progress/common/progress';
|
||||
import { FileAccess } from 'vs/base/common/network';
|
||||
|
||||
@@ -12,7 +12,7 @@ import { ExtensionData, IThemeExtensionPoint, IWorkbenchFileIconTheme } from 'vs
|
||||
import { getParseErrorMessage } from 'vs/base/common/jsonErrorMessages';
|
||||
import { asCSSUrl } from 'vs/base/browser/dom';
|
||||
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { ILanguageService } from 'vs/editor/common/languages/language';
|
||||
|
||||
export class FileIconThemeData implements IWorkbenchFileIconTheme {
|
||||
|
||||
@@ -17,7 +17,7 @@ import { isObject, isString } from 'vs/base/common/types';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { IconDefinition, getIconRegistry, IconContribution, IconFontDefinition, IconFontSource } from 'vs/platform/theme/common/iconRegistry';
|
||||
import { ThemeIcon } from 'vs/platform/theme/common/themeService';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
|
||||
export const DEFAULT_PRODUCT_ICON_THEME_ID = ''; // TODO
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import { registerColorThemeSchemas } from 'vs/workbench/services/themes/common/c
|
||||
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { getRemoteAuthority } from 'vs/platform/remote/common/remoteHosts';
|
||||
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { ThemeRegistry, registerColorThemeExtensionPoint, registerFileIconThemeExtensionPoint, registerProductIconThemeExtensionPoint } from 'vs/workbench/services/themes/common/themeExtensionPoints';
|
||||
import { updateColorThemeConfigurationSchemas, updateFileIconThemeConfigurationSchemas, ThemeConfiguration, updateProductIconThemeConfigurationSchemas } from 'vs/workbench/services/themes/common/themeConfiguration';
|
||||
import { ProductIconThemeData, DEFAULT_PRODUCT_ICON_THEME_ID } from 'vs/workbench/services/themes/browser/productIconThemeData';
|
||||
|
||||
@@ -19,7 +19,7 @@ import { URI } from 'vs/base/common/uri';
|
||||
import { parse as parsePList } from 'vs/workbench/services/themes/common/plistParser';
|
||||
import { TokenStyle, SemanticTokenRule, ProbeScope, getTokenClassificationRegistry, TokenStyleValue, TokenStyleData, parseClassifierString } from 'vs/platform/theme/common/tokenClassificationRegistry';
|
||||
import { MatcherWithPriority, Matcher, createMatchers } from 'vs/workbench/services/themes/common/textMateScopeMatcher';
|
||||
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
||||
import { CharCode } from 'vs/base/common/charCode';
|
||||
import { StorageScope, IStorageService, StorageTarget } from 'vs/platform/storage/common/storage';
|
||||
import { ThemeConfiguration } from 'vs/workbench/services/themes/common/themeConfiguration';
|
||||
|
||||
@@ -13,7 +13,7 @@ import { FileService } from 'vs/platform/files/common/fileService';
|
||||
import { NullLogService } from 'vs/platform/log/common/log';
|
||||
import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider';
|
||||
import { FileAccess, Schemas } from 'vs/base/common/network';
|
||||
import { ExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/electron-sandbox/extensionResourceLoaderService';
|
||||
import { ExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/electron-sandbox/extensionResourceLoaderService';
|
||||
import { ITokenStyle } from 'vs/platform/theme/common/themeService';
|
||||
import { mock, TestProductService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { IRequestService } from 'vs/platform/request/common/request';
|
||||
|
||||
@@ -46,7 +46,6 @@ import 'vs/workbench/services/lifecycle/electron-sandbox/lifecycleService';
|
||||
import 'vs/workbench/services/title/electron-sandbox/titleService';
|
||||
import 'vs/workbench/services/host/electron-sandbox/nativeHostService';
|
||||
import 'vs/workbench/services/request/electron-sandbox/requestService';
|
||||
import 'vs/workbench/services/extensionResourceLoader/electron-sandbox/extensionResourceLoaderService';
|
||||
import 'vs/workbench/services/clipboard/electron-sandbox/clipboardService';
|
||||
import 'vs/workbench/services/contextmenu/electron-sandbox/contextmenuService';
|
||||
import 'vs/workbench/services/workspaces/electron-sandbox/workspaceEditingService';
|
||||
@@ -61,6 +60,7 @@ import 'vs/workbench/services/encryption/electron-sandbox/encryptionService';
|
||||
import 'vs/workbench/services/localization/electron-sandbox/languagePackService';
|
||||
import 'vs/workbench/services/telemetry/electron-sandbox/telemetryService';
|
||||
import 'vs/workbench/services/extensions/electron-sandbox/extensionHostStarter';
|
||||
import 'vs/platform/extensionResourceLoader/electron-sandbox/extensionResourceLoaderService';
|
||||
import 'vs/platform/extensionManagement/electron-sandbox/extensionsScannerService';
|
||||
import 'vs/workbench/services/extensionManagement/electron-sandbox/extensionManagementServerService';
|
||||
import 'vs/workbench/services/extensionManagement/electron-sandbox/extensionTipsService';
|
||||
|
||||
@@ -53,7 +53,6 @@ import 'vs/workbench/services/dialogs/browser/fileDialogService';
|
||||
import 'vs/workbench/services/host/browser/browserHostService';
|
||||
import 'vs/workbench/services/lifecycle/browser/lifecycleService';
|
||||
import 'vs/workbench/services/clipboard/browser/clipboardService';
|
||||
import 'vs/workbench/services/extensionResourceLoader/browser/extensionResourceLoaderService';
|
||||
import 'vs/workbench/services/path/browser/pathService';
|
||||
import 'vs/workbench/services/themes/browser/browserHostColorSchemeService';
|
||||
import 'vs/workbench/services/encryption/browser/encryptionService';
|
||||
@@ -64,6 +63,7 @@ import 'vs/workbench/services/workingCopy/browser/workingCopyHistoryService';
|
||||
import 'vs/workbench/services/userDataSync/browser/webUserDataSyncEnablementService';
|
||||
import 'vs/workbench/services/userDataSync/browser/userDataSyncProfilesStorageService';
|
||||
import 'vs/workbench/services/configurationResolver/browser/configurationResolverService';
|
||||
import 'vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService';
|
||||
|
||||
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
|
||||
|
||||
Reference in New Issue
Block a user