From 202b31dc40037e82219ef1ff571d8da50f6a5eb6 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 23 Aug 2019 11:23:21 +0200 Subject: [PATCH] web main :lipstick: --- src/vs/code/browser/workbench/workbench.js | 8 ++++-- src/vs/workbench/browser/web.main.ts | 31 ++++++++++++---------- src/vs/workbench/workbench.web.api.ts | 2 ++ 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/vs/code/browser/workbench/workbench.js b/src/vs/code/browser/workbench/workbench.js index 5050cb4e5b4..5687627518e 100644 --- a/src/vs/code/browser/workbench/workbench.js +++ b/src/vs/code/browser/workbench/workbench.js @@ -3,11 +3,15 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +//@ts-check 'use strict'; (function () { - require.config({ + /** @type any */ + const amdLoader = require; + + amdLoader.config({ baseUrl: `${window.location.origin}/static/out`, paths: { 'vscode-textmate': `${window.location.origin}/static/node_modules/vscode-textmate/release/main`, @@ -20,7 +24,7 @@ } }); - require(['vs/workbench/workbench.web.api'], function (api) { + amdLoader(['vs/workbench/workbench.web.api'], function (api) { const options = JSON.parse(document.getElementById('vscode-workbench-web-configuration').getAttribute('data-settings')); api.create(document.body, options); diff --git a/src/vs/workbench/browser/web.main.ts b/src/vs/workbench/browser/web.main.ts index 57192e3e1c8..04a72e9e914 100644 --- a/src/vs/workbench/browser/web.main.ts +++ b/src/vs/workbench/browser/web.main.ts @@ -90,7 +90,7 @@ class CodeRendererMain extends Disposable { // Driver if (this.configuration.driver) { - registerWindowDriver().then(d => this._register(d)); + (async () => this._register(await registerWindowDriver()))(); } // Startup @@ -153,23 +153,24 @@ class CodeRendererMain extends Disposable { // Logger const indexedDBLogProvider = new IndexedDBLogProvider(logsPath.scheme); - indexedDBLogProvider.database.then( - () => fileService.registerProvider(logsPath.scheme, indexedDBLogProvider), - e => { + (async () => { + try { + await indexedDBLogProvider.database; + + fileService.registerProvider(logsPath.scheme, indexedDBLogProvider); + } catch (error) { (logService).info('Error while creating indexedDB log provider. Falling back to in-memory log provider.'); - (logService).error(e); + (logService).error(error); + fileService.registerProvider(logsPath.scheme, new InMemoryLogProvider(logsPath.scheme)); } - ).then(() => { + const consoleLogService = new ConsoleLogService(logService.getLevel()); const fileLogService = new FileLogService('window', environmentService.logFile, logService.getLevel(), fileService); logService.logger = new MultiplexLogService([consoleLogService, fileLogService]); - }); - - // Static Extensions - const staticExtensions = new StaticExtensionsService(this.configuration.staticExtensions || []); - serviceCollection.set(IStaticExtensionsService, staticExtensions); + })(); + // User Data Provider let userDataProvider: IFileSystemProvider | undefined = this.configuration.userDataProvider; const connection = remoteAgentService.getConnection(); if (connection) { @@ -185,14 +186,16 @@ class CodeRendererMain extends Disposable { } } } - if (!userDataProvider) { userDataProvider = this._register(new InMemoryUserDataProvider()); } - - // User Data Provider fileService.registerProvider(Schemas.userData, userDataProvider); + // Static Extensions + const staticExtensions = new StaticExtensionsService(this.configuration.staticExtensions || []); + serviceCollection.set(IStaticExtensionsService, staticExtensions); + + // Long running services (workspace, config, storage) const services = await Promise.all([ this.createWorkspaceService(payload, environmentService, fileService, remoteAgentService, logService).then(service => { diff --git a/src/vs/workbench/workbench.web.api.ts b/src/vs/workbench/workbench.web.api.ts index 844ff1da56a..7f1da9f1203 100644 --- a/src/vs/workbench/workbench.web.api.ts +++ b/src/vs/workbench/workbench.web.api.ts @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import 'vs/workbench/workbench.web.main'; +import 'vs/nls!vs/workbench/workbench.web.main'; +import 'vs/css!vs/workbench/workbench.web.main'; import { main } from 'vs/workbench/browser/web.main'; import { UriComponents } from 'vs/base/common/uri'; import { IFileSystemProvider } from 'vs/platform/files/common/files';