@theia/core 1.40.1 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/i18n/nls.cs.json +6 -1
- package/i18n/nls.de.json +6 -1
- package/i18n/nls.es.json +6 -1
- package/i18n/nls.fr.json +6 -1
- package/i18n/nls.hu.json +6 -1
- package/i18n/nls.it.json +6 -1
- package/i18n/nls.ja.json +6 -1
- package/i18n/nls.json +6 -1
- package/i18n/nls.pl.json +6 -1
- package/i18n/nls.pt-br.json +6 -1
- package/i18n/nls.pt-pt.json +6 -1
- package/i18n/nls.ru.json +6 -1
- package/i18n/nls.zh-cn.json +6 -1
- package/lib/browser/common-frontend-contribution.d.ts +11 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +98 -14
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +5 -0
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/label-parser.d.ts +8 -0
- package/lib/browser/label-parser.d.ts.map +1 -1
- package/lib/browser/label-parser.js +14 -0
- package/lib/browser/label-parser.js.map +1 -1
- package/lib/browser/label-parser.spec.js +33 -0
- package/lib/browser/label-parser.spec.js.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.d.ts +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js +2 -2
- package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +2 -2
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/performance/frontend-stopwatch.d.ts.map +1 -1
- package/lib/browser/performance/frontend-stopwatch.js +6 -2
- package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +2 -0
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +48 -24
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preload/i18n-preload-contribution.d.ts +7 -0
- package/lib/browser/preload/i18n-preload-contribution.d.ts.map +1 -0
- package/lib/browser/preload/i18n-preload-contribution.js +63 -0
- package/lib/browser/preload/i18n-preload-contribution.js.map +1 -0
- package/lib/browser/preload/os-preload-contribution.d.ts +7 -0
- package/lib/browser/preload/os-preload-contribution.d.ts.map +1 -0
- package/lib/browser/preload/os-preload-contribution.js +49 -0
- package/lib/browser/preload/os-preload-contribution.js.map +1 -0
- package/lib/browser/preload/preload-module.d.ts +4 -0
- package/lib/browser/preload/preload-module.d.ts.map +1 -0
- package/lib/browser/preload/preload-module.js +39 -0
- package/lib/browser/preload/preload-module.js.map +1 -0
- package/lib/browser/preload/preloader.d.ts +12 -0
- package/lib/browser/preload/preloader.d.ts.map +1 -0
- package/lib/browser/preload/preloader.js +45 -0
- package/lib/browser/preload/preloader.js.map +1 -0
- package/lib/browser/preload/theme-preload-contribution.d.ts +5 -0
- package/lib/browser/preload/theme-preload-contribution.d.ts.map +1 -0
- package/lib/browser/preload/theme-preload-contribution.js +40 -0
- package/lib/browser/preload/theme-preload-contribution.js.map +1 -0
- package/lib/browser/saveable.d.ts +15 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +34 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +2 -0
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +8 -0
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +46 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +87 -6
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts +20 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +28 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +25 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +79 -7
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +9 -1
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/tree/tree-model.d.ts +2 -0
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +6 -0
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +18 -0
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +57 -0
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +18 -0
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +6 -0
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/widgets/enhanced-preview-widget.d.ts +7 -0
- package/lib/browser/widgets/enhanced-preview-widget.d.ts.map +1 -0
- package/lib/browser/widgets/enhanced-preview-widget.js +27 -0
- package/lib/browser/widgets/enhanced-preview-widget.js.map +1 -0
- package/lib/browser/window-contribution.js +1 -1
- package/lib/browser/window-contribution.js.map +1 -1
- package/lib/common/array-utils.d.ts +7 -0
- package/lib/common/array-utils.d.ts.map +1 -1
- package/lib/common/array-utils.js +21 -0
- package/lib/common/array-utils.js.map +1 -1
- package/lib/common/event.d.ts +5 -0
- package/lib/common/event.d.ts.map +1 -1
- package/lib/common/event.js +5 -1
- package/lib/common/event.js.map +1 -1
- package/lib/common/i18n/localization-server.d.ts +7 -0
- package/lib/common/i18n/localization-server.d.ts.map +1 -0
- package/lib/common/i18n/localization-server.js +21 -0
- package/lib/common/i18n/localization-server.js.map +1 -0
- package/lib/common/keys.d.ts.map +1 -1
- package/lib/common/keys.js +4 -3
- package/lib/common/keys.js.map +1 -1
- package/lib/common/logger-protocol.d.ts +2 -0
- package/lib/common/logger-protocol.d.ts.map +1 -1
- package/lib/common/logger-protocol.js +3 -0
- package/lib/common/logger-protocol.js.map +1 -1
- package/lib/common/logger-watcher.d.ts +4 -3
- package/lib/common/logger-watcher.d.ts.map +1 -1
- package/lib/common/logger-watcher.js +10 -6
- package/lib/common/logger-watcher.js.map +1 -1
- package/lib/common/logger.d.ts.map +1 -1
- package/lib/common/logger.js +4 -0
- package/lib/common/logger.js.map +1 -1
- package/lib/common/menu/menu-model-registry.d.ts +12 -1
- package/lib/common/menu/menu-model-registry.d.ts.map +1 -1
- package/lib/common/menu/menu-model-registry.js +46 -0
- package/lib/common/menu/menu-model-registry.js.map +1 -1
- package/lib/common/os.d.ts +5 -0
- package/lib/common/os.d.ts.map +1 -1
- package/lib/common/os.js +3 -1
- package/lib/common/os.js.map +1 -1
- package/lib/common/performance/measurement.d.ts +21 -0
- package/lib/common/performance/measurement.d.ts.map +1 -1
- package/lib/common/performance/stopwatch.d.ts +10 -2
- package/lib/common/performance/stopwatch.d.ts.map +1 -1
- package/lib/common/performance/stopwatch.js +34 -11
- package/lib/common/performance/stopwatch.js.map +1 -1
- package/lib/common/promise-util.d.ts +4 -0
- package/lib/common/promise-util.d.ts.map +1 -1
- package/lib/common/promise-util.js +11 -1
- package/lib/common/promise-util.js.map +1 -1
- package/lib/common/promise-util.spec.js +26 -12
- package/lib/common/promise-util.spec.js.map +1 -1
- package/lib/common/quick-pick-service.d.ts +6 -0
- package/lib/common/quick-pick-service.d.ts.map +1 -1
- package/lib/common/quick-pick-service.js.map +1 -1
- package/lib/common/types.d.ts +4 -0
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/types.js +16 -1
- package/lib/common/types.js.map +1 -1
- package/lib/common/uri.d.ts +1 -0
- package/lib/common/uri.d.ts.map +1 -1
- package/lib/common/uri.js +3 -0
- package/lib/common/uri.js.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -2
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +2 -2
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +4 -0
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +12 -0
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +3 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +1 -0
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +6 -0
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +37 -4
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +4 -3
- package/lib/node/backend-application-module.js.map +1 -1
- package/lib/node/backend-application.d.ts +5 -1
- package/lib/node/backend-application.d.ts.map +1 -1
- package/lib/node/backend-application.js +28 -5
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/console-logger-server.d.ts.map +1 -1
- package/lib/node/console-logger-server.js +5 -1
- package/lib/node/console-logger-server.js.map +1 -1
- package/lib/node/i18n/i18n-backend-module.d.ts.map +1 -1
- package/lib/node/i18n/i18n-backend-module.js +7 -4
- package/lib/node/i18n/i18n-backend-module.js.map +1 -1
- package/lib/node/i18n/{localization-backend-contribution.d.ts → localization-server.d.ts} +5 -4
- package/lib/node/i18n/localization-server.d.ts.map +1 -0
- package/lib/node/i18n/{localization-backend-contribution.js → localization-server.js} +13 -16
- package/lib/node/i18n/localization-server.js.map +1 -0
- package/lib/node/logger-backend-module.d.ts.map +1 -1
- package/lib/node/logger-backend-module.js +6 -1
- package/lib/node/logger-backend-module.js.map +1 -1
- package/lib/node/logger-cli-contribution.spec.js +1 -1
- package/lib/node/logger-cli-contribution.spec.js.map +1 -1
- package/lib/node/main.d.ts +2 -5
- package/lib/node/main.d.ts.map +1 -1
- package/lib/node/main.js.map +1 -1
- package/lib/node/os-backend-provider.d.ts +5 -0
- package/lib/node/os-backend-provider.d.ts.map +1 -0
- package/lib/node/{os-backend-application-contribution.js → os-backend-provider.js} +8 -10
- package/lib/node/os-backend-provider.js.map +1 -0
- package/lib/node/performance/node-stopwatch.js +1 -1
- package/lib/node/performance/node-stopwatch.js.map +1 -1
- package/package.json +10 -9
- package/src/browser/common-frontend-contribution.ts +108 -17
- package/src/browser/context-menu-renderer.ts +5 -0
- package/src/browser/label-parser.spec.ts +38 -0
- package/src/browser/label-parser.ts +15 -0
- package/src/browser/menu/browser-context-menu-renderer.ts +2 -2
- package/src/browser/menu/browser-menu-plugin.ts +2 -2
- package/src/browser/performance/frontend-stopwatch.ts +5 -2
- package/src/browser/preferences/preference-contribution.ts +49 -24
- package/src/browser/preload/i18n-preload-contribution.ts +50 -0
- package/src/browser/preload/os-preload-contribution.ts +37 -0
- package/src/browser/preload/preload-module.ts +45 -0
- package/src/browser/preload/preloader.ts +37 -0
- package/src/browser/preload/theme-preload-contribution.ts +31 -0
- package/src/browser/saveable.ts +41 -2
- package/src/browser/shell/application-shell.ts +11 -0
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +94 -8
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +28 -1
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +87 -8
- package/src/browser/shell/tab-bars.ts +8 -1
- package/src/browser/style/tabs.css +32 -2
- package/src/browser/tree/tree-model.ts +8 -0
- package/src/browser/tree/tree-widget.tsx +66 -0
- package/src/browser/tree/tree.ts +27 -0
- package/src/browser/widgets/enhanced-preview-widget.ts +27 -0
- package/src/browser/window-contribution.ts +1 -1
- package/src/common/array-utils.ts +20 -0
- package/src/common/event.ts +12 -2
- package/src/common/i18n/localization-server.ts +25 -0
- package/src/common/i18n/nls.metadata.json +6767 -6260
- package/src/common/keys.ts +4 -3
- package/src/common/logger-protocol.ts +4 -0
- package/src/common/logger-watcher.ts +12 -7
- package/src/common/logger.ts +5 -0
- package/src/common/menu/menu-model-registry.ts +50 -0
- package/src/common/os.ts +8 -0
- package/src/common/performance/measurement.ts +26 -0
- package/src/common/performance/stopwatch.ts +38 -12
- package/src/common/promise-util.spec.ts +43 -12
- package/src/common/promise-util.ts +12 -0
- package/src/common/quick-pick-service.ts +1 -0
- package/src/common/types.ts +17 -0
- package/src/common/uri.ts +4 -0
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -2
- package/src/electron-browser/menu/electron-main-menu-factory.ts +2 -2
- package/src/electron-browser/menu/electron-menu-contribution.ts +13 -0
- package/src/electron-browser/preload.ts +4 -1
- package/src/electron-common/electron-api.ts +2 -0
- package/src/electron-main/electron-api-main.ts +4 -1
- package/src/electron-main/electron-main-application.ts +43 -4
- package/src/node/backend-application-module.ts +7 -4
- package/src/node/backend-application.ts +30 -5
- package/src/node/console-logger-server.ts +5 -2
- package/src/node/i18n/i18n-backend-module.ts +9 -4
- package/src/node/i18n/{localization-backend-contribution.ts → localization-server.ts} +9 -10
- package/src/node/logger-backend-module.ts +8 -1
- package/src/node/logger-cli-contribution.spec.ts +1 -1
- package/src/node/main.ts +1 -6
- package/src/node/{os-backend-application-contribution.ts → os-backend-provider.ts} +4 -9
- package/src/node/performance/node-stopwatch.ts +1 -1
- package/lib/browser/preloader.d.ts +0 -2
- package/lib/browser/preloader.d.ts.map +0 -1
- package/lib/browser/preloader.js +0 -75
- package/lib/browser/preloader.js.map +0 -1
- package/lib/node/i18n/localization-backend-contribution.d.ts.map +0 -1
- package/lib/node/i18n/localization-backend-contribution.js.map +0 -1
- package/lib/node/os-backend-application-contribution.d.ts +0 -6
- package/lib/node/os-backend-application-contribution.d.ts.map +0 -1
- package/lib/node/os-backend-application-contribution.js.map +0 -1
- package/src/browser/preloader.ts +0 -76
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { inject, injectable, named } from 'inversify';
|
|
18
|
-
import { screen, app, BrowserWindow, WebContents, Event as ElectronEvent, BrowserWindowConstructorOptions, nativeImage } from '../../electron-shared/electron';
|
|
18
|
+
import { screen, app, BrowserWindow, WebContents, Event as ElectronEvent, BrowserWindowConstructorOptions, nativeImage, nativeTheme } from '../../electron-shared/electron';
|
|
19
19
|
import * as path from 'path';
|
|
20
20
|
import { Argv } from 'yargs';
|
|
21
21
|
import { AddressInfo } from 'net';
|
|
22
22
|
import { promises as fs } from 'fs';
|
|
23
23
|
import { fork, ForkOptions } from 'child_process';
|
|
24
|
-
import { FrontendApplicationConfig } from '@theia/application-package/lib/application-props';
|
|
24
|
+
import { DefaultTheme, FrontendApplicationConfig } from '@theia/application-package/lib/application-props';
|
|
25
25
|
import URI from '../common/uri';
|
|
26
26
|
import { FileUri } from '../node/file-uri';
|
|
27
27
|
import { Deferred } from '../common/promise-util';
|
|
@@ -180,10 +180,13 @@ export class ElectronMainApplication {
|
|
|
180
180
|
|
|
181
181
|
protected _config: FrontendApplicationConfig | undefined;
|
|
182
182
|
protected useNativeWindowFrame: boolean = true;
|
|
183
|
+
protected customBackgroundColor?: string;
|
|
183
184
|
protected didUseNativeWindowFrameOnStart = new Map<number, boolean>();
|
|
184
185
|
protected windows = new Map<number, TheiaElectronWindow>();
|
|
185
186
|
protected restarting = false;
|
|
186
187
|
|
|
188
|
+
protected initialWindow?: BrowserWindow;
|
|
189
|
+
|
|
187
190
|
get config(): FrontendApplicationConfig {
|
|
188
191
|
if (!this._config) {
|
|
189
192
|
throw new Error('You have to start the application first.');
|
|
@@ -195,6 +198,7 @@ export class ElectronMainApplication {
|
|
|
195
198
|
this.useNativeWindowFrame = this.getTitleBarStyle(config) === 'native';
|
|
196
199
|
this._config = config;
|
|
197
200
|
this.hookApplicationEvents();
|
|
201
|
+
this.showInitialWindow();
|
|
198
202
|
const port = await this.startBackend();
|
|
199
203
|
this._backendPort.resolve(port);
|
|
200
204
|
await app.whenReady();
|
|
@@ -226,6 +230,15 @@ export class ElectronMainApplication {
|
|
|
226
230
|
|
|
227
231
|
public setTitleBarStyle(webContents: WebContents, style: string): void {
|
|
228
232
|
this.useNativeWindowFrame = isOSX || style === 'native';
|
|
233
|
+
this.saveState(webContents);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
setBackgroundColor(webContents: WebContents, backgroundColor: string): void {
|
|
237
|
+
this.customBackgroundColor = backgroundColor;
|
|
238
|
+
this.saveState(webContents);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
protected saveState(webContents: Electron.WebContents): void {
|
|
229
242
|
const browserWindow = BrowserWindow.fromWebContents(webContents);
|
|
230
243
|
if (browserWindow) {
|
|
231
244
|
this.saveWindowState(browserWindow);
|
|
@@ -242,6 +255,16 @@ export class ElectronMainApplication {
|
|
|
242
255
|
return this.didUseNativeWindowFrameOnStart.get(webContents.id) ? 'native' : 'custom';
|
|
243
256
|
}
|
|
244
257
|
|
|
258
|
+
protected showInitialWindow(): void {
|
|
259
|
+
if (this.config.electron.showWindowEarly) {
|
|
260
|
+
app.whenReady().then(async () => {
|
|
261
|
+
const options = await this.getLastWindowOptions();
|
|
262
|
+
this.initialWindow = await this.createWindow({ ...options });
|
|
263
|
+
this.initialWindow.show();
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
245
268
|
protected async launch(params: ElectronMainExecutionParams): Promise<void> {
|
|
246
269
|
createYargs(params.argv, params.cwd)
|
|
247
270
|
.command('$0 [file]', false,
|
|
@@ -303,6 +326,7 @@ export class ElectronMainApplication {
|
|
|
303
326
|
return {
|
|
304
327
|
show: false,
|
|
305
328
|
title: this.config.applicationName,
|
|
329
|
+
backgroundColor: DefaultTheme.defaultBackgroundColor(this.config.electron.windowOptions?.darkTheme || nativeTheme.shouldUseDarkColors),
|
|
306
330
|
minWidth: 200,
|
|
307
331
|
minHeight: 120,
|
|
308
332
|
webPreferences: {
|
|
@@ -320,18 +344,29 @@ export class ElectronMainApplication {
|
|
|
320
344
|
}
|
|
321
345
|
|
|
322
346
|
async openDefaultWindow(): Promise<BrowserWindow> {
|
|
323
|
-
const
|
|
347
|
+
const options = this.getDefaultTheiaWindowOptions();
|
|
348
|
+
const [uri, electronWindow] = await Promise.all([this.createWindowUri(), this.reuseOrCreateWindow(options)]);
|
|
324
349
|
electronWindow.loadURL(uri.withFragment(DEFAULT_WINDOW_HASH).toString(true));
|
|
325
350
|
return electronWindow;
|
|
326
351
|
}
|
|
327
352
|
|
|
328
353
|
protected async openWindowWithWorkspace(workspacePath: string): Promise<BrowserWindow> {
|
|
329
354
|
const options = await this.getLastWindowOptions();
|
|
330
|
-
const [uri, electronWindow] = await Promise.all([this.createWindowUri(), this.
|
|
355
|
+
const [uri, electronWindow] = await Promise.all([this.createWindowUri(), this.reuseOrCreateWindow(options)]);
|
|
331
356
|
electronWindow.loadURL(uri.withFragment(encodeURI(workspacePath)).toString(true));
|
|
332
357
|
return electronWindow;
|
|
333
358
|
}
|
|
334
359
|
|
|
360
|
+
protected async reuseOrCreateWindow(asyncOptions: MaybePromise<TheiaBrowserWindowOptions>): Promise<BrowserWindow> {
|
|
361
|
+
if (!this.initialWindow) {
|
|
362
|
+
return this.createWindow(asyncOptions);
|
|
363
|
+
}
|
|
364
|
+
// reset initial window after having it re-used once
|
|
365
|
+
const window = this.initialWindow;
|
|
366
|
+
this.initialWindow = undefined;
|
|
367
|
+
return window;
|
|
368
|
+
}
|
|
369
|
+
|
|
335
370
|
/** Configures native window creation, i.e. using window.open or links with target "_blank" in the frontend. */
|
|
336
371
|
protected configureNativeSecondaryWindowCreation(electronWindow: BrowserWindow): void {
|
|
337
372
|
electronWindow.webContents.setWindowOpenHandler(() => {
|
|
@@ -455,6 +490,7 @@ export class ElectronMainApplication {
|
|
|
455
490
|
y: bounds.y,
|
|
456
491
|
frame: this.useNativeWindowFrame,
|
|
457
492
|
screenLayout: this.getCurrentScreenLayout(),
|
|
493
|
+
backgroundColor: this.customBackgroundColor
|
|
458
494
|
};
|
|
459
495
|
this.electronStore.set('windowstate', options);
|
|
460
496
|
} catch (e) {
|
|
@@ -507,6 +543,9 @@ export class ElectronMainApplication {
|
|
|
507
543
|
backendProcess.on('error', error => {
|
|
508
544
|
reject(error);
|
|
509
545
|
});
|
|
546
|
+
backendProcess.on('exit', () => {
|
|
547
|
+
reject(new Error('backend process exited'));
|
|
548
|
+
});
|
|
510
549
|
app.on('quit', () => {
|
|
511
550
|
// Only issue a kill signal if the backend process is running.
|
|
512
551
|
// eslint-disable-next-line no-null/no-null
|
|
@@ -19,7 +19,7 @@ import { ApplicationPackage } from '@theia/application-package';
|
|
|
19
19
|
import { REQUEST_SERVICE_PATH } from '@theia/request';
|
|
20
20
|
import {
|
|
21
21
|
bindContributionProvider, MessageService, MessageClient, ConnectionHandler, RpcConnectionHandler,
|
|
22
|
-
CommandService, commandServicePath, messageServicePath
|
|
22
|
+
CommandService, commandServicePath, messageServicePath, OSBackendProvider, OSBackendProviderPath
|
|
23
23
|
} from '../common';
|
|
24
24
|
import { BackendApplication, BackendApplicationContribution, BackendApplicationCliContribution, BackendApplicationServer } from './backend-application';
|
|
25
25
|
import { CliManager, CliContribution } from './cli';
|
|
@@ -38,7 +38,7 @@ import { EnvironmentUtils } from './environment-utils';
|
|
|
38
38
|
import { ProcessUtils } from './process-utils';
|
|
39
39
|
import { ProxyCliContribution } from './request/proxy-cli-contribution';
|
|
40
40
|
import { bindNodeStopwatch, bindBackendStopwatchServer } from './performance';
|
|
41
|
-
import {
|
|
41
|
+
import { OSBackendProviderImpl } from './os-backend-provider';
|
|
42
42
|
import { BackendRequestFacade } from './request/backend-request-facade';
|
|
43
43
|
import { FileSystemLocking, FileSystemLockingImpl } from './filesystem-locking';
|
|
44
44
|
|
|
@@ -116,8 +116,11 @@ export const backendApplicationModule = new ContainerModule(bind => {
|
|
|
116
116
|
bind(EnvironmentUtils).toSelf().inSingletonScope();
|
|
117
117
|
bind(ProcessUtils).toSelf().inSingletonScope();
|
|
118
118
|
|
|
119
|
-
bind(
|
|
120
|
-
bind(
|
|
119
|
+
bind(OSBackendProviderImpl).toSelf().inSingletonScope();
|
|
120
|
+
bind(OSBackendProvider).toService(OSBackendProviderImpl);
|
|
121
|
+
bind(ConnectionHandler).toDynamicValue(
|
|
122
|
+
ctx => new RpcConnectionHandler(OSBackendProviderPath, () => ctx.container.get(OSBackendProvider))
|
|
123
|
+
).inSingletonScope();
|
|
121
124
|
|
|
122
125
|
bind(ProxyCliContribution).toSelf().inSingletonScope();
|
|
123
126
|
bind(CliContribution).toService(ProxyCliContribution);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import * as dns from 'dns';
|
|
17
18
|
import * as path from 'path';
|
|
18
19
|
import * as http from 'http';
|
|
19
20
|
import * as https from 'https';
|
|
@@ -29,6 +30,8 @@ import { AddressInfo } from 'net';
|
|
|
29
30
|
import { ApplicationPackage } from '@theia/application-package';
|
|
30
31
|
import { ProcessUtils } from './process-utils';
|
|
31
32
|
|
|
33
|
+
export type DnsResultOrder = 'ipv4first' | 'verbatim' | 'nodeDefault';
|
|
34
|
+
|
|
32
35
|
const APP_PROJECT_PATH = 'app-project-path';
|
|
33
36
|
|
|
34
37
|
const TIMER_WARNING_THRESHOLD = 50;
|
|
@@ -36,6 +39,7 @@ const TIMER_WARNING_THRESHOLD = 50;
|
|
|
36
39
|
const DEFAULT_PORT = environment.electron.is() ? 0 : 3000;
|
|
37
40
|
const DEFAULT_HOST = 'localhost';
|
|
38
41
|
const DEFAULT_SSL = false;
|
|
42
|
+
const DEFAULT_DNS_DEFAULT_RESULT_ORDER: DnsResultOrder = 'ipv4first';
|
|
39
43
|
|
|
40
44
|
export const BackendApplicationServer = Symbol('BackendApplicationServer');
|
|
41
45
|
/**
|
|
@@ -107,6 +111,7 @@ export class BackendApplicationCliContribution implements CliContribution {
|
|
|
107
111
|
|
|
108
112
|
port: number;
|
|
109
113
|
hostname: string | undefined;
|
|
114
|
+
dnsDefaultResultOrder: DnsResultOrder = DEFAULT_DNS_DEFAULT_RESULT_ORDER;
|
|
110
115
|
ssl: boolean | undefined;
|
|
111
116
|
cert: string | undefined;
|
|
112
117
|
certkey: string | undefined;
|
|
@@ -119,6 +124,12 @@ export class BackendApplicationCliContribution implements CliContribution {
|
|
|
119
124
|
conf.option('cert', { description: 'Path to SSL certificate.', type: 'string' });
|
|
120
125
|
conf.option('certkey', { description: 'Path to SSL certificate key.', type: 'string' });
|
|
121
126
|
conf.option(APP_PROJECT_PATH, { description: 'Sets the application project directory', default: this.appProjectPath() });
|
|
127
|
+
conf.option('dnsDefaultResultOrder', {
|
|
128
|
+
type: 'string',
|
|
129
|
+
description: 'Configure Node\'s DNS resolver default behavior, see https://nodejs.org/docs/latest-v18.x/api/dns.html#dnssetdefaultresultorderorder',
|
|
130
|
+
choices: ['ipv4first', 'verbatim', 'nodeDefault'],
|
|
131
|
+
default: DEFAULT_DNS_DEFAULT_RESULT_ORDER
|
|
132
|
+
});
|
|
122
133
|
}
|
|
123
134
|
|
|
124
135
|
setArguments(args: yargs.Arguments): void {
|
|
@@ -128,6 +139,7 @@ export class BackendApplicationCliContribution implements CliContribution {
|
|
|
128
139
|
this.cert = args.cert as string;
|
|
129
140
|
this.certkey = args.certkey as string;
|
|
130
141
|
this.projectPath = args[APP_PROJECT_PATH] as string;
|
|
142
|
+
this.dnsDefaultResultOrder = args.dnsDefaultResultOrder as DnsResultOrder;
|
|
131
143
|
}
|
|
132
144
|
|
|
133
145
|
protected appProjectPath(): string {
|
|
@@ -234,9 +246,13 @@ export class BackendApplication {
|
|
|
234
246
|
this.app.use(...handlers);
|
|
235
247
|
}
|
|
236
248
|
|
|
237
|
-
async start(
|
|
238
|
-
|
|
239
|
-
|
|
249
|
+
async start(port?: number, hostname?: string): Promise<http.Server | https.Server> {
|
|
250
|
+
hostname ??= this.cliParams.hostname;
|
|
251
|
+
port ??= this.cliParams.port;
|
|
252
|
+
|
|
253
|
+
if (this.cliParams.dnsDefaultResultOrder !== 'nodeDefault') {
|
|
254
|
+
dns.setDefaultResultOrder(this.cliParams.dnsDefaultResultOrder);
|
|
255
|
+
}
|
|
240
256
|
|
|
241
257
|
const deferred = new Deferred<http.Server | https.Server>();
|
|
242
258
|
let server: http.Server | https.Server;
|
|
@@ -279,8 +295,10 @@ export class BackendApplication {
|
|
|
279
295
|
});
|
|
280
296
|
|
|
281
297
|
server.listen(port, hostname, () => {
|
|
282
|
-
|
|
283
|
-
|
|
298
|
+
// address should be defined at this point
|
|
299
|
+
const address = server.address()!;
|
|
300
|
+
const url = typeof address === 'string' ? address : this.getHttpUrl(address, this.cliParams.ssl);
|
|
301
|
+
console.info(`Theia app listening on ${url}.`);
|
|
284
302
|
deferred.resolve(server);
|
|
285
303
|
});
|
|
286
304
|
|
|
@@ -301,6 +319,13 @@ export class BackendApplication {
|
|
|
301
319
|
return this.stopwatch.startAsync('server', 'Finished starting backend application', () => deferred.promise);
|
|
302
320
|
}
|
|
303
321
|
|
|
322
|
+
protected getHttpUrl({ address, port, family }: AddressInfo, ssl?: boolean): string {
|
|
323
|
+
const scheme = ssl ? 'https' : 'http';
|
|
324
|
+
return family.toLowerCase() === 'ipv6'
|
|
325
|
+
? `${scheme}://[${address}]:${port}`
|
|
326
|
+
: `${scheme}://${address}:${port}`;
|
|
327
|
+
}
|
|
328
|
+
|
|
304
329
|
protected onStop(): void {
|
|
305
330
|
console.info('>>> Stopping backend contributions...');
|
|
306
331
|
for (const contrib of this.contributionsProvider.getContributions()) {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
18
18
|
import { LoggerWatcher } from '../common/logger-watcher';
|
|
19
19
|
import { LogLevelCliContribution } from './logger-cli-contribution';
|
|
20
|
-
import { ILoggerServer, ILoggerClient, ConsoleLogger } from '../common/logger-protocol';
|
|
20
|
+
import { ILoggerServer, ILoggerClient, ConsoleLogger, rootLoggerName } from '../common/logger-protocol';
|
|
21
21
|
|
|
22
22
|
@injectable()
|
|
23
23
|
export class ConsoleLoggerServer implements ILoggerServer {
|
|
@@ -32,9 +32,13 @@ export class ConsoleLoggerServer implements ILoggerServer {
|
|
|
32
32
|
|
|
33
33
|
@postConstruct()
|
|
34
34
|
protected init(): void {
|
|
35
|
+
this.setLogLevel(rootLoggerName, this.cli.defaultLogLevel);
|
|
35
36
|
for (const name of Object.keys(this.cli.logLevels)) {
|
|
36
37
|
this.setLogLevel(name, this.cli.logLevels[name]);
|
|
37
38
|
}
|
|
39
|
+
this.cli.onLogConfigChanged(() => {
|
|
40
|
+
this.client?.onLogConfigChanged();
|
|
41
|
+
});
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
async setLogLevel(name: string, newLogLevel: number): Promise<void> {
|
|
@@ -45,7 +49,6 @@ export class ConsoleLoggerServer implements ILoggerServer {
|
|
|
45
49
|
if (this.client !== undefined) {
|
|
46
50
|
this.client.onLogLevelChanged(event);
|
|
47
51
|
}
|
|
48
|
-
this.watcher.fireLogLevelChanged(event);
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
async getLogLevel(name: string): Promise<number> {
|
|
@@ -19,9 +19,10 @@ import { localizationPath } from '../../common/i18n/localization';
|
|
|
19
19
|
import { LocalizationProvider } from './localization-provider';
|
|
20
20
|
import { ConnectionHandler, RpcConnectionHandler, bindContributionProvider } from '../../common';
|
|
21
21
|
import { LocalizationRegistry, LocalizationContribution } from './localization-contribution';
|
|
22
|
-
import {
|
|
23
|
-
import { BackendApplicationContribution } from '../backend-application';
|
|
22
|
+
import { LocalizationServerImpl } from './localization-server';
|
|
24
23
|
import { TheiaLocalizationContribution } from './theia-localization-contribution';
|
|
24
|
+
import { LocalizationServer, LocalizationServerPath } from '../../common/i18n/localization-server';
|
|
25
|
+
import { BackendApplicationContribution } from '../backend-application';
|
|
25
26
|
|
|
26
27
|
export default new ContainerModule(bind => {
|
|
27
28
|
bind(LocalizationProvider).toSelf().inSingletonScope();
|
|
@@ -30,8 +31,12 @@ export default new ContainerModule(bind => {
|
|
|
30
31
|
).inSingletonScope();
|
|
31
32
|
bind(LocalizationRegistry).toSelf().inSingletonScope();
|
|
32
33
|
bindContributionProvider(bind, LocalizationContribution);
|
|
33
|
-
bind(
|
|
34
|
-
bind(
|
|
34
|
+
bind(LocalizationServerImpl).toSelf().inSingletonScope();
|
|
35
|
+
bind(LocalizationServer).toService(LocalizationServerImpl);
|
|
36
|
+
bind(BackendApplicationContribution).toService(LocalizationServerImpl);
|
|
37
|
+
bind(ConnectionHandler).toDynamicValue(ctx =>
|
|
38
|
+
new RpcConnectionHandler(LocalizationServerPath, () => ctx.container.get(LocalizationServer))
|
|
39
|
+
).inSingletonScope();
|
|
35
40
|
bind(TheiaLocalizationContribution).toSelf().inSingletonScope();
|
|
36
41
|
bind(LocalizationContribution).toService(TheiaLocalizationContribution);
|
|
37
42
|
});
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import * as express from 'express';
|
|
18
17
|
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { Localization } from 'src/common/i18n/localization';
|
|
19
|
+
import { LocalizationServer } from '../../common/i18n/localization-server';
|
|
19
20
|
import { nls } from '../../common/nls';
|
|
20
21
|
import { Deferred } from '../../common/promise-util';
|
|
21
22
|
import { BackendApplicationContribution } from '../backend-application';
|
|
@@ -23,7 +24,8 @@ import { LocalizationRegistry } from './localization-contribution';
|
|
|
23
24
|
import { LocalizationProvider } from './localization-provider';
|
|
24
25
|
|
|
25
26
|
@injectable()
|
|
26
|
-
export class
|
|
27
|
+
export class LocalizationServerImpl implements LocalizationServer, BackendApplicationContribution {
|
|
28
|
+
|
|
27
29
|
protected readonly initialized = new Deferred<void>();
|
|
28
30
|
|
|
29
31
|
@inject(LocalizationRegistry)
|
|
@@ -41,13 +43,10 @@ export class LocalizationBackendContribution implements BackendApplicationContri
|
|
|
41
43
|
return this.initialized.promise;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.localizationProvider.setCurrentLanguage(locale);
|
|
50
|
-
res.send(this.localizationProvider.loadLocalization(locale));
|
|
51
|
-
});
|
|
46
|
+
async loadLocalization(languageId: string): Promise<Localization> {
|
|
47
|
+
await this.waitForInitialization();
|
|
48
|
+
languageId = this.localizationProvider.getAvailableLanguages().some(e => e.languageId === languageId) ? languageId : nls.defaultLocale;
|
|
49
|
+
this.localizationProvider.setCurrentLanguage(languageId);
|
|
50
|
+
return this.localizationProvider.loadLocalization(languageId);
|
|
52
51
|
}
|
|
53
52
|
}
|
|
@@ -63,7 +63,14 @@ export const loggerBackendModule = new ContainerModule(bind => {
|
|
|
63
63
|
bind(DispatchingLoggerClient).toSelf().inSingletonScope();
|
|
64
64
|
bindLogger(bind, {
|
|
65
65
|
onLoggerServerActivation: ({ container }, server) => {
|
|
66
|
-
|
|
66
|
+
const dispatchingLoggerClient = container.get(DispatchingLoggerClient);
|
|
67
|
+
server.setClient(dispatchingLoggerClient);
|
|
68
|
+
|
|
69
|
+
// register backend logger watcher as a client
|
|
70
|
+
const loggerWatcher = container.get(LoggerWatcher);
|
|
71
|
+
dispatchingLoggerClient.clients.add(loggerWatcher.getLoggerClient());
|
|
72
|
+
|
|
73
|
+
// make sure dispatching logger client is the only client
|
|
67
74
|
server.setClient = () => {
|
|
68
75
|
throw new Error('use DispatchingLoggerClient');
|
|
69
76
|
};
|
|
@@ -137,7 +137,7 @@ describe('log-level-cli-contribution', () => {
|
|
|
137
137
|
|
|
138
138
|
const args: yargs.Arguments = yargs.parse(['--log-config', file.path]);
|
|
139
139
|
await cli.setArguments(args);
|
|
140
|
-
sinon.assert.calledWithMatch(consoleErrorSpy, '
|
|
140
|
+
sinon.assert.calledWithMatch(consoleErrorSpy, 'Error reading log config file');
|
|
141
141
|
});
|
|
142
142
|
|
|
143
143
|
// Skip this test because it is flaky, sometimes we don't receive the event.
|
package/src/node/main.ts
CHANGED
|
@@ -26,12 +26,7 @@ process.on('unhandledRejection', (reason, promise) => {
|
|
|
26
26
|
throw reason;
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
export
|
|
30
|
-
readonly port: number;
|
|
31
|
-
readonly address: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export async function start(serverModule: MaybePromise<http.Server | https.Server>): Promise<Address> {
|
|
29
|
+
export async function start(serverModule: MaybePromise<http.Server | https.Server>): Promise<AddressInfo> {
|
|
35
30
|
const server = await serverModule;
|
|
36
31
|
return server.address() as AddressInfo;
|
|
37
32
|
}
|
|
@@ -14,17 +14,12 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import * as express from 'express';
|
|
18
17
|
import { injectable } from 'inversify';
|
|
19
|
-
import {
|
|
20
|
-
import { OS } from '../common/os';
|
|
18
|
+
import { OS, OSBackendProvider } from '../common/os';
|
|
21
19
|
|
|
22
20
|
@injectable()
|
|
23
|
-
export class
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
app.get('/os', (_, res) => {
|
|
27
|
-
res.send(OS.type());
|
|
28
|
-
});
|
|
21
|
+
export class OSBackendProviderImpl implements OSBackendProvider {
|
|
22
|
+
getBackendOS(): Promise<OS.Type> {
|
|
23
|
+
return Promise.resolve(OS.type());
|
|
29
24
|
}
|
|
30
25
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preloader.d.ts","sourceRoot":"","sources":["../../src/browser/preloader.ts"],"names":[],"mappings":"AAqEA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAM7C"}
|
package/lib/browser/preloader.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2022 TypeFox and others.
|
|
4
|
-
//
|
|
5
|
-
// This program and the accompanying materials are made available under the
|
|
6
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
-
//
|
|
9
|
-
// This Source Code may also be made available under the following Secondary
|
|
10
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
-
// with the GNU Classpath Exception which is available at
|
|
13
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
-
// *****************************************************************************
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.preload = void 0;
|
|
19
|
-
const nls_1 = require("../common/nls");
|
|
20
|
-
const endpoint_1 = require("./endpoint");
|
|
21
|
-
const os_1 = require("../common/os");
|
|
22
|
-
const frontend_application_config_provider_1 = require("./frontend-application-config-provider");
|
|
23
|
-
function fetchFrom(path) {
|
|
24
|
-
const endpoint = new endpoint_1.Endpoint({ path }).getRestUrl().toString();
|
|
25
|
-
return fetch(endpoint);
|
|
26
|
-
}
|
|
27
|
-
async function loadTranslations() {
|
|
28
|
-
const defaultLocale = frontend_application_config_provider_1.FrontendApplicationConfigProvider.get().defaultLocale;
|
|
29
|
-
if (defaultLocale && !nls_1.nls.locale) {
|
|
30
|
-
Object.assign(nls_1.nls, {
|
|
31
|
-
locale: defaultLocale
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
if (nls_1.nls.locale) {
|
|
35
|
-
const response = await fetchFrom(`/i18n/${nls_1.nls.locale}`);
|
|
36
|
-
const localization = await response.json();
|
|
37
|
-
if (localization.languagePack) {
|
|
38
|
-
nls_1.nls.localization = localization;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
// In case the localization that we've loaded doesn't localize Theia completely (languagePack is false)
|
|
42
|
-
// We simply reset the locale to the default again
|
|
43
|
-
Object.assign(nls_1.nls, {
|
|
44
|
-
locale: defaultLocale || undefined
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async function loadBackendOS() {
|
|
50
|
-
const response = await fetchFrom('/os');
|
|
51
|
-
const osType = await response.text();
|
|
52
|
-
const isWindows = osType === 'Windows';
|
|
53
|
-
const isOSX = osType === 'OSX';
|
|
54
|
-
os_1.OS.backend.isOSX = isOSX;
|
|
55
|
-
os_1.OS.backend.isWindows = isWindows;
|
|
56
|
-
os_1.OS.backend.type = () => osType;
|
|
57
|
-
os_1.OS.backend.EOL = isWindows ? '\r\n' : '\n';
|
|
58
|
-
}
|
|
59
|
-
function initBackground() {
|
|
60
|
-
// The default light background color is based on the `colors#editor.background` value from
|
|
61
|
-
// `packages/monaco/data/monaco-themes/vscode/dark_vs.json` and the dark background comes from the `light_vs.json`.
|
|
62
|
-
const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
63
|
-
const value = window.localStorage.getItem(frontend_application_config_provider_1.DEFAULT_BACKGROUND_COLOR_STORAGE_KEY) || (dark ? '#1E1E1E' : '#FFFFFF');
|
|
64
|
-
const documentElement = document.documentElement;
|
|
65
|
-
documentElement.style.setProperty('--theia-editor-background', value);
|
|
66
|
-
}
|
|
67
|
-
async function preload() {
|
|
68
|
-
await Promise.allSettled([
|
|
69
|
-
loadTranslations(),
|
|
70
|
-
loadBackendOS(),
|
|
71
|
-
initBackground(),
|
|
72
|
-
]);
|
|
73
|
-
}
|
|
74
|
-
exports.preload = preload;
|
|
75
|
-
//# sourceMappingURL=preloader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preloader.js","sourceRoot":"","sources":["../../src/browser/preloader.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uCAAoC;AACpC,yCAAsC;AACtC,qCAAkC;AAClC,iGAAiI;AAGjI,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC3B,MAAM,aAAa,GAAG,wEAAiC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;IAC5E,IAAI,aAAa,IAAI,CAAC,SAAG,CAAC,MAAM,EAAE;QAC9B,MAAM,CAAC,MAAM,CAAC,SAAG,EAAE;YACf,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;KACN;IACD,IAAI,SAAG,CAAC,MAAM,EAAE;QACZ,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,SAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAkB,CAAC;QAC3D,IAAI,YAAY,CAAC,YAAY,EAAE;YAC3B,SAAG,CAAC,YAAY,GAAG,YAAY,CAAC;SACnC;aAAM;YACH,uGAAuG;YACvG,kDAAkD;YAClD,MAAM,CAAC,MAAM,CAAC,SAAG,EAAE;gBACf,MAAM,EAAE,aAAa,IAAI,SAAS;aACrC,CAAC,CAAC;SACN;KACJ;AACL,CAAC;AAED,KAAK,UAAU,aAAa;IACxB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAa,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;IAC/B,OAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,OAAE,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IACjC,OAAE,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;IAC/B,OAAE,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,SAAS,cAAc;IACnB,2FAA2F;IAC3F,mHAAmH;IACnH,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC;IAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,2EAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClH,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;IACjD,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAEM,KAAK,UAAU,OAAO;IACzB,MAAM,OAAO,CAAC,UAAU,CAAC;QACrB,gBAAgB,EAAE;QAClB,aAAa,EAAE;QACf,cAAc,EAAE;KACnB,CAAC,CAAC;AACP,CAAC;AAND,0BAMC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localization-backend-contribution.d.ts","sourceRoot":"","sources":["../../../src/node/i18n/localization-backend-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,qBACa,+BAAgC,YAAW,8BAA8B;IAClF,SAAS,CAAC,QAAQ,CAAC,WAAW,iBAAwB;IAGtD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAG9D,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAExD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;CAS5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localization-backend-contribution.js","sourceRoot":"","sources":["../../../src/node/i18n/localization-backend-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;;;;;;;;;AAGhF,yCAA+C;AAC/C,0CAAuC;AACvC,4DAAqD;AAErD,2EAAmE;AACnE,mEAA+D;AAG/D,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAA5C;QACuB,gBAAW,GAAG,IAAI,uBAAQ,EAAQ,CAAC;IA0B1D,CAAC;IAlBG,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,GAAwB;QAC9B,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnC,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,aAAa,CAAC;YAC3H,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAvBG;IADC,IAAA,kBAAM,EAAC,gDAAoB,CAAC;8BACY,gDAAoB;6EAAC;AAG9D;IADC,IAAA,kBAAM,EAAC,4CAAoB,CAAC;8BACY,4CAAoB;6EAAC;AAPrD,+BAA+B;IAD3C,IAAA,sBAAU,GAAE;GACA,+BAA+B,CA2B3C;AA3BY,0EAA+B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as express from 'express';
|
|
2
|
-
import { BackendApplicationContribution } from './backend-application';
|
|
3
|
-
export declare class OSBackendApplicationContribution implements BackendApplicationContribution {
|
|
4
|
-
configure(app: express.Application): void;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=os-backend-application-contribution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"os-backend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/node/os-backend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAGvE,qBACa,gCAAiC,YAAW,8BAA8B;IAEnF,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;CAK5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"os-backend-application-contribution.js","sourceRoot":"","sources":["../../src/node/os-backend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;;;;;;AAGhF,yCAAuC;AAEvC,qCAAkC;AAGlC,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAEzC,SAAS,CAAC,GAAwB;QAC9B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtB,GAAG,CAAC,IAAI,CAAC,OAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAPY,gCAAgC;IAD5C,IAAA,sBAAU,GAAE;GACA,gCAAgC,CAO5C;AAPY,4EAAgC"}
|
package/src/browser/preloader.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2022 TypeFox and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { nls } from '../common/nls';
|
|
18
|
-
import { Endpoint } from './endpoint';
|
|
19
|
-
import { OS } from '../common/os';
|
|
20
|
-
import { DEFAULT_BACKGROUND_COLOR_STORAGE_KEY, FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
21
|
-
import { Localization } from '../common/i18n/localization';
|
|
22
|
-
|
|
23
|
-
function fetchFrom(path: string): Promise<Response> {
|
|
24
|
-
const endpoint = new Endpoint({ path }).getRestUrl().toString();
|
|
25
|
-
return fetch(endpoint);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async function loadTranslations(): Promise<void> {
|
|
29
|
-
const defaultLocale = FrontendApplicationConfigProvider.get().defaultLocale;
|
|
30
|
-
if (defaultLocale && !nls.locale) {
|
|
31
|
-
Object.assign(nls, {
|
|
32
|
-
locale: defaultLocale
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
if (nls.locale) {
|
|
36
|
-
const response = await fetchFrom(`/i18n/${nls.locale}`);
|
|
37
|
-
const localization = await response.json() as Localization;
|
|
38
|
-
if (localization.languagePack) {
|
|
39
|
-
nls.localization = localization;
|
|
40
|
-
} else {
|
|
41
|
-
// In case the localization that we've loaded doesn't localize Theia completely (languagePack is false)
|
|
42
|
-
// We simply reset the locale to the default again
|
|
43
|
-
Object.assign(nls, {
|
|
44
|
-
locale: defaultLocale || undefined
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async function loadBackendOS(): Promise<void> {
|
|
51
|
-
const response = await fetchFrom('/os');
|
|
52
|
-
const osType = await response.text() as OS.Type;
|
|
53
|
-
const isWindows = osType === 'Windows';
|
|
54
|
-
const isOSX = osType === 'OSX';
|
|
55
|
-
OS.backend.isOSX = isOSX;
|
|
56
|
-
OS.backend.isWindows = isWindows;
|
|
57
|
-
OS.backend.type = () => osType;
|
|
58
|
-
OS.backend.EOL = isWindows ? '\r\n' : '\n';
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function initBackground(): void {
|
|
62
|
-
// The default light background color is based on the `colors#editor.background` value from
|
|
63
|
-
// `packages/monaco/data/monaco-themes/vscode/dark_vs.json` and the dark background comes from the `light_vs.json`.
|
|
64
|
-
const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
65
|
-
const value = window.localStorage.getItem(DEFAULT_BACKGROUND_COLOR_STORAGE_KEY) || (dark ? '#1E1E1E' : '#FFFFFF');
|
|
66
|
-
const documentElement = document.documentElement;
|
|
67
|
-
documentElement.style.setProperty('--theia-editor-background', value);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export async function preload(): Promise<void> {
|
|
71
|
-
await Promise.allSettled([
|
|
72
|
-
loadTranslations(),
|
|
73
|
-
loadBackendOS(),
|
|
74
|
-
initBackground(),
|
|
75
|
-
]);
|
|
76
|
-
}
|