mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-04-19 12:57:17 +00:00
Update Theia, CLI and LS (#610)
* Update Theia to 1.19.0 * update CLI to 0.20.0-rc3 * Add language selector to settings * updated language server and vscode-arduino-tools * update Language Server flags * get cli port from config * force native menu on windows * pinned Language Server to rc2 * fix search icon * update CLI version
This commit is contained in:
parent
6e34a27b7e
commit
dd76f9180c
@ -21,22 +21,22 @@
|
||||
"dependencies": {
|
||||
"arduino-serial-plotter-webapp": "0.0.15",
|
||||
"@grpc/grpc-js": "^1.3.7",
|
||||
"@theia/application-package": "1.18.0",
|
||||
"@theia/core": "1.18.0",
|
||||
"@theia/editor": "1.18.0",
|
||||
"@theia/editor-preview": "1.18.0",
|
||||
"@theia/filesystem": "1.18.0",
|
||||
"@theia/git": "1.18.0",
|
||||
"@theia/keymaps": "1.18.0",
|
||||
"@theia/markers": "1.18.0",
|
||||
"@theia/monaco": "1.18.0",
|
||||
"@theia/navigator": "1.18.0",
|
||||
"@theia/outline-view": "1.18.0",
|
||||
"@theia/output": "1.18.0",
|
||||
"@theia/preferences": "1.18.0",
|
||||
"@theia/search-in-workspace": "1.18.0",
|
||||
"@theia/terminal": "1.18.0",
|
||||
"@theia/workspace": "1.18.0",
|
||||
"@theia/application-package": "1.19.0",
|
||||
"@theia/core": "1.19.0",
|
||||
"@theia/editor": "1.19.0",
|
||||
"@theia/editor-preview": "1.19.0",
|
||||
"@theia/filesystem": "1.19.0",
|
||||
"@theia/git": "1.19.0",
|
||||
"@theia/keymaps": "1.19.0",
|
||||
"@theia/markers": "1.19.0",
|
||||
"@theia/monaco": "1.19.0",
|
||||
"@theia/navigator": "1.19.0",
|
||||
"@theia/outline-view": "1.19.0",
|
||||
"@theia/output": "1.19.0",
|
||||
"@theia/preferences": "1.19.0",
|
||||
"@theia/search-in-workspace": "1.19.0",
|
||||
"@theia/terminal": "1.19.0",
|
||||
"@theia/workspace": "1.19.0",
|
||||
"@tippyjs/react": "^4.2.5",
|
||||
"@types/atob": "^2.1.2",
|
||||
"@types/auth0-js": "^9.14.0",
|
||||
@ -149,7 +149,7 @@
|
||||
],
|
||||
"arduino": {
|
||||
"cli": {
|
||||
"version": "0.20.0"
|
||||
"version": "0.20.1"
|
||||
},
|
||||
"fwuploader": {
|
||||
"version": "2.0.0"
|
||||
|
@ -4,69 +4,78 @@
|
||||
// - https://downloads.arduino.cc/arduino-language-server/clangd/clangd_${VERSION}_${SUFFIX}
|
||||
|
||||
(() => {
|
||||
const DEFAULT_ALS_VERSION = '0.5.0-rc2';
|
||||
const DEFAULT_CLANGD_VERSION = 'snapshot_20210124';
|
||||
|
||||
const DEFAULT_ALS_VERSION = 'nightly';
|
||||
const DEFAULT_CLANGD_VERSION = 'snapshot_20210124';
|
||||
const path = require('path');
|
||||
const shell = require('shelljs');
|
||||
const downloader = require('./downloader');
|
||||
|
||||
const path = require('path');
|
||||
const shell = require('shelljs');
|
||||
const downloader = require('./downloader');
|
||||
const yargs = require('yargs')
|
||||
.option('ls-version', {
|
||||
alias: 'lv',
|
||||
default: DEFAULT_ALS_VERSION,
|
||||
describe: `The version of the 'arduino-language-server' to download. Defaults to ${DEFAULT_ALS_VERSION}.`,
|
||||
})
|
||||
.option('clangd-version', {
|
||||
alias: 'cv',
|
||||
default: DEFAULT_CLANGD_VERSION,
|
||||
choices: ['snapshot_20210124'],
|
||||
describe: `The version of 'clangd' to download. Defaults to ${DEFAULT_CLANGD_VERSION}.`,
|
||||
})
|
||||
.option('force-download', {
|
||||
alias: 'fd',
|
||||
default: false,
|
||||
describe: `If set, this script force downloads the 'arduino-language-server' even if it already exists on the file system.`,
|
||||
})
|
||||
.version(false)
|
||||
.parse();
|
||||
|
||||
const yargs = require('yargs')
|
||||
.option('ls-version', {
|
||||
alias: 'lv',
|
||||
default: DEFAULT_ALS_VERSION,
|
||||
choices: ['nightly'],
|
||||
describe: `The version of the 'arduino-language-server' to download. Defaults to ${DEFAULT_ALS_VERSION}.`
|
||||
})
|
||||
.option('clangd-version', {
|
||||
alias: 'cv',
|
||||
default: DEFAULT_CLANGD_VERSION,
|
||||
choices: ['snapshot_20210124'],
|
||||
describe: `The version of 'clangd' to download. Defaults to ${DEFAULT_CLANGD_VERSION}.`
|
||||
})
|
||||
.option('force-download', {
|
||||
alias: 'fd',
|
||||
default: false,
|
||||
describe: `If set, this script force downloads the 'arduino-language-server' even if it already exists on the file system.`
|
||||
})
|
||||
.version(false).parse();
|
||||
const alsVersion = yargs['ls-version'];
|
||||
const clangdVersion = yargs['clangd-version'];
|
||||
const force = yargs['force-download'];
|
||||
const { platform, arch } = process;
|
||||
|
||||
const alsVersion = yargs['ls-version'];
|
||||
const clangdVersion = yargs['clangd-version']
|
||||
const force = yargs['force-download'];
|
||||
const { platform, arch } = process;
|
||||
const build = path.join(__dirname, '..', 'build');
|
||||
const lsExecutablePath = path.join(
|
||||
build,
|
||||
`arduino-language-server${platform === 'win32' ? '.exe' : ''}`
|
||||
);
|
||||
|
||||
const build = path.join(__dirname, '..', 'build');
|
||||
const lsExecutablePath = path.join(build, `arduino-language-server${platform === 'win32' ? '.exe' : ''}`);
|
||||
let clangdExecutablePath, lsSuffix, clangdPrefix;
|
||||
switch (platform) {
|
||||
case 'darwin':
|
||||
clangdExecutablePath = path.join(build, 'bin', 'clangd');
|
||||
lsSuffix = 'macOS_64bit.tar.gz';
|
||||
clangdPrefix = 'mac';
|
||||
break;
|
||||
case 'linux':
|
||||
clangdExecutablePath = path.join(build, 'bin', 'clangd');
|
||||
lsSuffix = 'Linux_64bit.tar.gz';
|
||||
clangdPrefix = 'linux';
|
||||
break;
|
||||
case 'win32':
|
||||
clangdExecutablePath = path.join(build, 'bin', 'clangd.exe');
|
||||
lsSuffix = 'Windows_64bit.zip';
|
||||
clangdPrefix = 'windows';
|
||||
break;
|
||||
}
|
||||
if (!lsSuffix) {
|
||||
shell.echo(
|
||||
`The arduino-language-server is not available for ${platform} ${arch}.`
|
||||
);
|
||||
shell.exit(1);
|
||||
}
|
||||
|
||||
let clangdExecutablePath, lsSuffix, clangdPrefix;
|
||||
switch (platform) {
|
||||
case 'darwin':
|
||||
clangdExecutablePath = path.join(build, 'bin', 'clangd')
|
||||
lsSuffix = 'macOS_amd64.zip';
|
||||
clangdPrefix = 'mac';
|
||||
break;
|
||||
case 'linux':
|
||||
clangdExecutablePath = path.join(build, 'bin', 'clangd')
|
||||
lsSuffix = 'Linux_amd64.zip';
|
||||
clangdPrefix = 'linux'
|
||||
break;
|
||||
case 'win32':
|
||||
clangdExecutablePath = path.join(build, 'bin', 'clangd.exe')
|
||||
lsSuffix = 'Windows_amd64.zip';
|
||||
clangdPrefix = 'windows';
|
||||
break;
|
||||
}
|
||||
if (!lsSuffix) {
|
||||
shell.echo(`The arduino-language-server is not available for ${platform} ${arch}.`);
|
||||
shell.exit(1);
|
||||
}
|
||||
|
||||
const alsUrl = `https://downloads.arduino.cc/arduino-language-server/${alsVersion === 'nightly' ? 'nightly/arduino-language-server' : 'arduino-language-server_' + alsVersion}_${lsSuffix}`;
|
||||
downloader.downloadUnzipAll(alsUrl, build, lsExecutablePath, force);
|
||||
|
||||
const clangdUrl = `https://downloads.arduino.cc/arduino-language-server/clangd/clangd-${clangdPrefix}-${clangdVersion}.zip`;
|
||||
downloader.downloadUnzipAll(clangdUrl, build, clangdExecutablePath, force, { strip: 1 }); // `strip`: the new clangd (12.x) is zipped into a folder, so we have to strip the outmost folder.
|
||||
const alsUrl = `https://downloads.arduino.cc/arduino-language-server/${
|
||||
alsVersion === 'nightly'
|
||||
? 'nightly/arduino-language-server'
|
||||
: 'arduino-language-server_' + alsVersion
|
||||
}_${lsSuffix}`;
|
||||
downloader.downloadUnzipAll(alsUrl, build, lsExecutablePath, force);
|
||||
|
||||
const clangdUrl = `https://downloads.arduino.cc/arduino-language-server/clangd/clangd-${clangdPrefix}-${clangdVersion}.zip`;
|
||||
downloader.downloadUnzipAll(clangdUrl, build, clangdExecutablePath, force, {
|
||||
strip: 1,
|
||||
}); // `strip`: the new clangd (12.x) is zipped into a folder, so we have to strip the outmost folder.
|
||||
})();
|
||||
|
@ -1,3 +1,13 @@
|
||||
import { inject, injectable, postConstruct } from 'inversify';
|
||||
import * as React from 'react';
|
||||
import { remote } from 'electron';
|
||||
import {
|
||||
BoardsService,
|
||||
Port,
|
||||
SketchesService,
|
||||
ExecutableService,
|
||||
Sketch,
|
||||
} from '../common/protocol';
|
||||
import { Mutex } from 'async-mutex';
|
||||
import {
|
||||
MAIN_MENU_BAR,
|
||||
@ -13,7 +23,7 @@ import {
|
||||
StatusBar,
|
||||
StatusBarAlignment,
|
||||
} from '@theia/core/lib/browser';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';
|
||||
import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
|
||||
import { CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
|
||||
@ -40,16 +50,10 @@ import { OutputContribution } from '@theia/output/lib/browser/output-contributio
|
||||
import { ScmContribution } from '@theia/scm/lib/browser/scm-contribution';
|
||||
import { SearchInWorkspaceFrontendContribution } from '@theia/search-in-workspace/lib/browser/search-in-workspace-frontend-contribution';
|
||||
import { TerminalMenus } from '@theia/terminal/lib/browser/terminal-frontend-contribution';
|
||||
import { inject, injectable, postConstruct } from 'inversify';
|
||||
import * as React from 'react';
|
||||
import { remote } from 'electron';
|
||||
import {
|
||||
BoardsService,
|
||||
Port,
|
||||
SketchesService,
|
||||
ExecutableService,
|
||||
Sketch,
|
||||
} from '../common/protocol';
|
||||
import { HostedPluginSupport } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin';
|
||||
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
||||
import { FileChangeType } from '@theia/filesystem/lib/browser';
|
||||
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
|
||||
import { ConfigService } from '../common/protocol/config-service';
|
||||
import { ArduinoCommands } from './arduino-commands';
|
||||
import { BoardsConfig } from './boards/boards-config';
|
||||
@ -60,13 +64,9 @@ import { EditorMode } from './editor-mode';
|
||||
import { ArduinoMenus } from './menu/arduino-menus';
|
||||
import { MonitorViewContribution } from './serial/monitor/monitor-view-contribution';
|
||||
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
|
||||
import { HostedPluginSupport } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin';
|
||||
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
||||
import { ArduinoPreferences } from './arduino-preferences';
|
||||
import { SketchesServiceClientImpl } from '../common/protocol/sketches-service-client-impl';
|
||||
import { SaveAsSketch } from './contributions/save-as-sketch';
|
||||
import { FileChangeType } from '@theia/filesystem/lib/browser';
|
||||
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
|
||||
import { SketchbookWidgetContribution } from './widgets/sketchbook/sketchbook-widget-contribution';
|
||||
|
||||
const INIT_AVR_PACKAGES = 'initializedAvrPackages';
|
||||
@ -340,15 +340,14 @@ export class ArduinoFrontendContribution
|
||||
);
|
||||
}
|
||||
}
|
||||
const { clangdUri, cliUri, lsUri } = await this.executableService.list();
|
||||
const [clangdPath, cliPath, lsPath, cliConfigPath] = await Promise.all([
|
||||
const { clangdUri, lsUri } = await this.executableService.list();
|
||||
const [clangdPath, lsPath] = await Promise.all([
|
||||
this.fileService.fsPath(new URI(clangdUri)),
|
||||
this.fileService.fsPath(new URI(cliUri)),
|
||||
this.fileService.fsPath(new URI(lsUri)),
|
||||
this.fileService.fsPath(
|
||||
new URI(await this.configService.getCliConfigFileUri())
|
||||
),
|
||||
]);
|
||||
|
||||
const config = await this.configService.getConfiguration();
|
||||
|
||||
this.languageServerFqbn = await Promise.race([
|
||||
new Promise<undefined>((_, reject) =>
|
||||
setTimeout(
|
||||
@ -360,10 +359,10 @@ export class ArduinoFrontendContribution
|
||||
'arduino.languageserver.start',
|
||||
{
|
||||
lsPath,
|
||||
cliPath,
|
||||
cliDaemonAddr: `localhost:${config.daemon.port}`,
|
||||
clangdPath,
|
||||
log: currentSketchPath ? currentSketchPath : log,
|
||||
cliConfigPath,
|
||||
cliDaemonInstance: '1',
|
||||
board: {
|
||||
fqbn,
|
||||
name: name ? `"${name}"` : undefined,
|
||||
|
@ -154,7 +154,7 @@ import {
|
||||
} from '../common/protocol/examples-service';
|
||||
import { BuiltInExamples, LibraryExamples } from './contributions/examples';
|
||||
import { IncludeLibrary } from './contributions/include-library';
|
||||
import { OutputChannelManager as TheiaOutputChannelManager } from '@theia/output/lib/common/output-channel';
|
||||
import { OutputChannelManager as TheiaOutputChannelManager } from '@theia/output/lib/browser/output-channel';
|
||||
import { OutputChannelManager } from './theia/output/output-channel';
|
||||
import {
|
||||
OutputChannelRegistryMainImpl as TheiaOutputChannelRegistryMainImpl,
|
||||
@ -190,12 +190,12 @@ import { BoardSelection } from './contributions/board-selection';
|
||||
import { OpenRecentSketch } from './contributions/open-recent-sketch';
|
||||
import { Help } from './contributions/help';
|
||||
import { bindArduinoPreferences } from './arduino-preferences';
|
||||
import { SettingsService } from './dialogs/settings/settings';
|
||||
import {
|
||||
SettingsService,
|
||||
SettingsDialog,
|
||||
SettingsWidget,
|
||||
SettingsDialogProps,
|
||||
} from './settings';
|
||||
} from './dialogs/settings/settings-dialog';
|
||||
import { AddFile } from './contributions/add-file';
|
||||
import { ArchiveSketch } from './contributions/archive-sketch';
|
||||
import { OutputToolbarContribution as TheiaOutputToolbarContribution } from '@theia/output/lib/browser/output-toolbar-contribution';
|
||||
@ -207,6 +207,8 @@ import { DebugConfigurationManager } from './theia/debug/debug-configuration-man
|
||||
import { DebugConfigurationManager as TheiaDebugConfigurationManager } from '@theia/debug/lib/browser/debug-configuration-manager';
|
||||
import { SearchInWorkspaceWidget as TheiaSearchInWorkspaceWidget } from '@theia/search-in-workspace/lib/browser/search-in-workspace-widget';
|
||||
import { SearchInWorkspaceWidget } from './theia/search-in-workspace/search-in-workspace-widget';
|
||||
import { SearchInWorkspaceFactory as TheiaSearchInWorkspaceFactory } from '@theia/search-in-workspace/lib/browser/search-in-workspace-factory';
|
||||
import { SearchInWorkspaceFactory } from './theia/search-in-workspace/search-in-workspace-factory';
|
||||
import { SearchInWorkspaceResultTreeWidget as TheiaSearchInWorkspaceResultTreeWidget } from '@theia/search-in-workspace/lib/browser/search-in-workspace-result-tree-widget';
|
||||
import { SearchInWorkspaceResultTreeWidget } from './theia/search-in-workspace/search-in-workspace-result-tree-widget';
|
||||
import { MonacoEditorProvider } from './theia/monaco/monaco-editor-provider';
|
||||
@ -259,7 +261,7 @@ import {
|
||||
UserFieldsDialogProps,
|
||||
UserFieldsDialogWidget,
|
||||
} from './dialogs/user-fields/user-fields-dialog';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
const ElementQueries = require('css-element-queries/src/ElementQueries');
|
||||
|
||||
@ -492,6 +494,12 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
||||
|
||||
bind(SearchInWorkspaceWidget).toSelf();
|
||||
rebind(TheiaSearchInWorkspaceWidget).toService(SearchInWorkspaceWidget);
|
||||
|
||||
// replace search icon
|
||||
rebind(TheiaSearchInWorkspaceFactory)
|
||||
.to(SearchInWorkspaceFactory)
|
||||
.inSingletonScope();
|
||||
|
||||
rebind(TheiaSearchInWorkspaceResultTreeWidget).toDynamicValue(
|
||||
({ container }) => {
|
||||
const childContainer = createTreeContainer(container);
|
||||
@ -678,7 +686,10 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
||||
bind(SettingsWidget).toSelf().inSingletonScope();
|
||||
bind(SettingsDialog).toSelf().inSingletonScope();
|
||||
bind(SettingsDialogProps).toConstantValue({
|
||||
title: 'Preferences',
|
||||
title: nls.localize(
|
||||
'vscode/preferences.contribution/preferences',
|
||||
'Preferences'
|
||||
),
|
||||
});
|
||||
|
||||
bind(StorageWrapper).toSelf().inSingletonScope();
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
PreferenceContribution,
|
||||
PreferenceSchema,
|
||||
} from '@theia/core/lib/browser/preferences';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import { CompilerWarningLiterals, CompilerWarnings } from '../common/protocol';
|
||||
|
||||
export const ArduinoConfigSchema: PreferenceSchema = {
|
||||
|
@ -10,7 +10,7 @@ import { BoardsServiceProvider } from './boards-service-provider';
|
||||
import { BoardsConfig } from './boards-config';
|
||||
import { Installable, ResponseServiceArduino } from '../../common/protocol';
|
||||
import { BoardsListWidgetFrontendContribution } from './boards-widget-frontend-contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
/**
|
||||
* Listens on `BoardsConfig.Config` changes, if a board is selected which does not
|
||||
|
@ -6,7 +6,7 @@ import { BoardsConfig } from './boards-config';
|
||||
import { BoardsService } from '../../common/protocol/boards-service';
|
||||
import { BoardsServiceProvider } from './boards-service-provider';
|
||||
import { BoardsConfigDialogWidget } from './boards-config-dialog-widget';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class BoardsConfigDialogProps extends DialogProps {}
|
||||
|
@ -14,8 +14,8 @@ import {
|
||||
AvailableBoard,
|
||||
BoardsServiceProvider,
|
||||
} from './boards-service-provider';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { naturalCompare } from '../../common/utils';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export namespace BoardsConfig {
|
||||
export interface Config {
|
||||
|
@ -12,7 +12,7 @@ import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
||||
import { BoardsDataStore } from './boards-data-store';
|
||||
import { MainMenuManager } from '../../common/main-menu-manager';
|
||||
import { ArduinoMenus, unregisterSubmenu } from '../menu/arduino-menus';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class BoardsDataMenuUpdater implements FrontendApplicationContribution {
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
} from '../../common/protocol/boards-service';
|
||||
import { ListWidget } from '../widgets/component-list/list-widget';
|
||||
import { ListItemRenderer } from '../widgets/component-list/list-item-renderer';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class BoardsListWidget extends ListWidget<BoardsPackage> {
|
||||
|
@ -19,7 +19,7 @@ import { naturalCompare } from '../../common/utils';
|
||||
import { NotificationCenter } from '../notification-center';
|
||||
import { ArduinoCommands } from '../arduino-commands';
|
||||
import { StorageWrapper } from '../storage-wrapper';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class BoardsServiceProvider implements FrontendApplicationContribution {
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
BoardsServiceProvider,
|
||||
AvailableBoard,
|
||||
} from './boards-service-provider';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export interface BoardsDropDownListCoords {
|
||||
readonly top: number;
|
||||
|
@ -12,7 +12,7 @@ import {
|
||||
} from './contribution';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { ConfigService } from '../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class About extends Contribution {
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
URI,
|
||||
} from './contribution';
|
||||
import { FileDialogService } from '@theia/filesystem/lib/browser';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class AddFile extends SketchContribution {
|
||||
|
@ -15,7 +15,7 @@ import {
|
||||
CommandRegistry,
|
||||
MenuModelRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class AddZipLibrary extends SketchContribution {
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
CommandRegistry,
|
||||
MenuModelRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class ArchiveSketch extends SketchContribution {
|
||||
|
@ -23,7 +23,7 @@ import {
|
||||
Port,
|
||||
} from '../../common/protocol';
|
||||
import { SketchContribution, Command, CommandRegistry } from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class BoardSelection extends SketchContribution {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { OutputChannelManager } from '@theia/output/lib/common/output-channel';
|
||||
import { OutputChannelManager } from '@theia/output/lib/browser/output-channel';
|
||||
import { CoreService } from '../../common/protocol';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { BoardsDataStore } from '../boards/boards-data-store';
|
||||
@ -11,7 +11,7 @@ import {
|
||||
CommandRegistry,
|
||||
MenuModelRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class BurnBootloader extends SketchContribution {
|
||||
|
@ -15,7 +15,7 @@ import {
|
||||
KeybindingRegistry,
|
||||
URI,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
/**
|
||||
* Closes the `current` closeable editor, or any closeable current widget from the main area, or the current sketch window.
|
||||
|
@ -9,7 +9,7 @@ import { EditorManager } from '@theia/editor/lib/browser/editor-manager';
|
||||
import { MessageService } from '@theia/core/lib/common/message-service';
|
||||
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
||||
import { open, OpenerService } from '@theia/core/lib/browser/opener-service';
|
||||
import { OutputChannelManager } from '@theia/output/lib/common/output-channel';
|
||||
import { OutputChannelManager } from '@theia/output/lib/browser/output-channel';
|
||||
import {
|
||||
MenuModelRegistry,
|
||||
MenuContribution,
|
||||
@ -33,7 +33,7 @@ import {
|
||||
CommandService,
|
||||
} from '@theia/core/lib/common/command';
|
||||
import { EditorMode } from '../editor-mode';
|
||||
import { SettingsService } from '../settings';
|
||||
import { SettingsService } from '../dialogs/settings/settings';
|
||||
import { SketchesServiceClientImpl } from '../../common/protocol/sketches-service-client-impl';
|
||||
import {
|
||||
SketchesService,
|
||||
|
@ -12,7 +12,7 @@ import {
|
||||
SketchContribution,
|
||||
TabBarToolbarRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class Debug extends SketchContribution {
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
CommandRegistry,
|
||||
} from './contribution';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
// TODO: [macOS]: to remove `Start Dictation...` and `Emoji & Symbol` see this thread: https://github.com/electron/electron/issues/8283#issuecomment-269522072
|
||||
// Depends on https://github.com/eclipse-theia/theia/pull/7964
|
||||
|
@ -22,7 +22,7 @@ import {
|
||||
} from './contribution';
|
||||
import { NotificationCenter } from '../notification-center';
|
||||
import { Board, Sketch, SketchContainer } from '../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export abstract class Examples extends SketchContribution {
|
||||
|
@ -12,7 +12,7 @@ import {
|
||||
CommandRegistry,
|
||||
KeybindingRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class Help extends Contribution {
|
||||
|
@ -15,7 +15,7 @@ import { LibraryListWidget } from '../library/library-list-widget';
|
||||
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
||||
import { SketchContribution, Command, CommandRegistry } from './contribution';
|
||||
import { NotificationCenter } from '../notification-center';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class IncludeLibrary extends SketchContribution {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import { injectable } from 'inversify';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { ArduinoToolbar } from '../toolbar/arduino-toolbar';
|
||||
|
@ -14,7 +14,7 @@ import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { MainMenuManager } from '../../common/main-menu-manager';
|
||||
import { OpenSketch } from './open-sketch';
|
||||
import { NotificationCenter } from '../notification-center';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class OpenRecentSketch extends SketchContribution {
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
MenuModelRegistry,
|
||||
KeybindingRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class OpenSketchExternal extends SketchContribution {
|
||||
|
@ -22,7 +22,7 @@ import { ExamplesService } from '../../common/protocol/examples-service';
|
||||
import { BuiltInExamples } from './examples';
|
||||
import { Sketchbook } from './sketchbook';
|
||||
import { SketchContainer } from '../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class OpenSketch extends SketchContribution {
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
CommandRegistry,
|
||||
} from './contribution';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class QuitApp extends Contribution {
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
MenuModelRegistry,
|
||||
KeybindingRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class SaveAsSketch extends SketchContribution {
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
KeybindingRegistry,
|
||||
TabBarToolbarRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class SaveSketch extends SketchContribution {
|
||||
|
@ -7,8 +7,9 @@ import {
|
||||
KeybindingRegistry,
|
||||
} from './contribution';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { Settings as Preferences, SettingsDialog } from '../settings';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { Settings as Preferences } from '../dialogs/settings/settings';
|
||||
import { SettingsDialog } from '../dialogs/settings/settings-dialog';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class Settings extends SketchContribution {
|
||||
|
@ -21,7 +21,7 @@ import { ArduinoMenus, PlaceholderMenuNode } from '../menu/arduino-menus';
|
||||
import { EditorManager } from '@theia/editor/lib/browser/editor-manager';
|
||||
import { SketchesServiceClientImpl } from '../../common/protocol/sketches-service-client-impl';
|
||||
import { LocalCacheFsProvider } from '../local-cache/local-cache-fs-provider';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class SketchControl extends SketchContribution {
|
||||
|
@ -7,7 +7,7 @@ import { NotificationCenter } from '../notification-center';
|
||||
import { Examples } from './examples';
|
||||
import { SketchContainer } from '../../common/protocol';
|
||||
import { OpenSketch } from './open-sketch';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class Sketchbook extends Examples {
|
||||
|
@ -18,7 +18,7 @@ import {
|
||||
certificateList,
|
||||
} from '../dialogs/certificate-uploader/utils';
|
||||
import { ArduinoFirmwareUploader } from '../../common/protocol/arduino-firmware-uploader';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class UploadCertificate extends Contribution {
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
} from './contribution';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { UploadFirmwareDialog } from '../dialogs/firmware-uploader/firmware-uploader-dialog';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class UploadFirmware extends Contribution {
|
||||
|
@ -15,8 +15,7 @@ import {
|
||||
TabBarToolbarRegistry,
|
||||
} from './contribution';
|
||||
import { UserFieldsDialog } from '../dialogs/user-fields/user-fields-dialog';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { DisposableCollection } from '@theia/core';
|
||||
import { DisposableCollection, nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class UploadSketch extends SketchContribution {
|
||||
|
@ -13,7 +13,7 @@ import {
|
||||
KeybindingRegistry,
|
||||
TabBarToolbarRegistry,
|
||||
} from './contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class VerifySketch extends SketchContribution {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import * as React from 'react';
|
||||
|
||||
export const CertificateAddComponent = ({
|
||||
|
@ -4,7 +4,7 @@ import { AvailableBoard } from '../../boards/boards-service-provider';
|
||||
import { CertificateListComponent } from './certificate-list';
|
||||
import { SelectBoardComponent } from './select-board-components';
|
||||
import { CertificateAddComponent } from './certificate-add-new';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export const CertificateUploaderComponent = ({
|
||||
availableBoards,
|
||||
|
@ -18,7 +18,7 @@ import {
|
||||
import { CommandRegistry } from '@theia/core/lib/common/command';
|
||||
import { certificateList, sanifyCertString } from './utils';
|
||||
import { ArduinoFirmwareUploader } from '../../../common/protocol/arduino-firmware-uploader';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class UploadCertificateDialogWidget extends ReactWidget {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import * as React from 'react';
|
||||
import { AvailableBoard } from '../../boards/boards-service-provider';
|
||||
import { ArduinoSelect } from '../../widgets/arduino-select';
|
||||
|
@ -6,7 +6,7 @@ import { clipboard } from 'electron';
|
||||
import { ReactWidget, DialogProps } from '@theia/core/lib/browser';
|
||||
import { AbstractDialog } from '../theia/dialogs/dialogs';
|
||||
import { CreateApi } from '../create/create-api';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
const RadioButton = (props: {
|
||||
id: string;
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
ConfirmDialogProps,
|
||||
DialogError,
|
||||
} from '@theia/core/lib/browser/dialogs';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class DoNotAskAgainDialogProps extends ConfirmDialogProps {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import * as React from 'react';
|
||||
import {
|
||||
ArduinoFirmwareUploader,
|
||||
|
@ -1,324 +1,22 @@
|
||||
import * as React from 'react';
|
||||
import { injectable, inject, postConstruct } from 'inversify';
|
||||
import { Widget } from '@phosphor/widgets';
|
||||
import { Message } from '@phosphor/messaging';
|
||||
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
|
||||
import 'react-tabs/style/react-tabs.css';
|
||||
import { Disable } from 'react-disable';
|
||||
import URI from '@theia/core/lib/common/uri';
|
||||
import { Emitter } from '@theia/core/lib/common/event';
|
||||
import { Deferred } from '@theia/core/lib/common/promise-util';
|
||||
import { deepClone } from '@theia/core/lib/common/objects';
|
||||
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
||||
import { ThemeService } from '@theia/core/lib/browser/theming';
|
||||
import { MaybePromise } from '@theia/core/lib/common/types';
|
||||
import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
||||
import { FileDialogService } from '@theia/filesystem/lib/browser/file-dialog/file-dialog-service';
|
||||
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
||||
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
|
||||
import {
|
||||
DialogProps,
|
||||
PreferenceService,
|
||||
PreferenceScope,
|
||||
DialogError,
|
||||
ReactWidget,
|
||||
} from '@theia/core/lib/browser';
|
||||
import { Index } from '../common/types';
|
||||
import {
|
||||
CompilerWarnings,
|
||||
CompilerWarningLiterals,
|
||||
ConfigService,
|
||||
FileSystemExt,
|
||||
Network,
|
||||
ProxySettings,
|
||||
} from '../common/protocol';
|
||||
import { AbstractDialog } from './theia/dialogs/dialogs';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
|
||||
const EDITOR_SETTING = 'editor';
|
||||
const FONT_SIZE_SETTING = `${EDITOR_SETTING}.fontSize`;
|
||||
const AUTO_SAVE_SETTING = `${EDITOR_SETTING}.autoSave`;
|
||||
const QUICK_SUGGESTIONS_SETTING = `${EDITOR_SETTING}.quickSuggestions`;
|
||||
const ARDUINO_SETTING = 'arduino';
|
||||
const WINDOW_SETTING = `${ARDUINO_SETTING}.window`;
|
||||
// const IDE_SETTING = `${ARDUINO_SETTING}.ide`;
|
||||
const COMPILE_SETTING = `${ARDUINO_SETTING}.compile`;
|
||||
const UPLOAD_SETTING = `${ARDUINO_SETTING}.upload`;
|
||||
const SKETCHBOOK_SETTING = `${ARDUINO_SETTING}.sketchbook`;
|
||||
const AUTO_SCALE_SETTING = `${WINDOW_SETTING}.autoScale`;
|
||||
const ZOOM_LEVEL_SETTING = `${WINDOW_SETTING}.zoomLevel`;
|
||||
// const AUTO_UPDATE_SETTING = `${IDE_SETTING}.autoUpdate`;
|
||||
const COMPILE_VERBOSE_SETTING = `${COMPILE_SETTING}.verbose`;
|
||||
const COMPILE_WARNINGS_SETTING = `${COMPILE_SETTING}.warnings`;
|
||||
const UPLOAD_VERBOSE_SETTING = `${UPLOAD_SETTING}.verbose`;
|
||||
const UPLOAD_VERIFY_SETTING = `${UPLOAD_SETTING}.verify`;
|
||||
const SHOW_ALL_FILES_SETTING = `${SKETCHBOOK_SETTING}.showAllFiles`;
|
||||
|
||||
export interface Settings extends Index {
|
||||
editorFontSize: number; // `editor.fontSize`
|
||||
themeId: string; // `workbench.colorTheme`
|
||||
autoSave: 'on' | 'off'; // `editor.autoSave`
|
||||
quickSuggestions: Record<'other' | 'comments' | 'strings', boolean>; // `editor.quickSuggestions`
|
||||
|
||||
autoScaleInterface: boolean; // `arduino.window.autoScale`
|
||||
interfaceScale: number; // `arduino.window.zoomLevel` https://github.com/eclipse-theia/theia/issues/8751
|
||||
checkForUpdates?: boolean; // `arduino.ide.autoUpdate`
|
||||
verboseOnCompile: boolean; // `arduino.compile.verbose`
|
||||
compilerWarnings: CompilerWarnings; // `arduino.compile.warnings`
|
||||
verboseOnUpload: boolean; // `arduino.upload.verbose`
|
||||
verifyAfterUpload: boolean; // `arduino.upload.verify`
|
||||
sketchbookShowAllFiles: boolean; // `arduino.sketchbook.showAllFiles`
|
||||
|
||||
sketchbookPath: string; // CLI
|
||||
additionalUrls: string[]; // CLI
|
||||
network: Network; // CLI
|
||||
}
|
||||
export namespace Settings {
|
||||
export function belongsToCli<K extends keyof Settings>(key: K): boolean {
|
||||
return key === 'sketchbookPath' || key === 'additionalUrls';
|
||||
}
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class SettingsService {
|
||||
@inject(FileService)
|
||||
protected readonly fileService: FileService;
|
||||
|
||||
@inject(FileSystemExt)
|
||||
protected readonly fileSystemExt: FileSystemExt;
|
||||
|
||||
@inject(ConfigService)
|
||||
protected readonly configService: ConfigService;
|
||||
|
||||
@inject(PreferenceService)
|
||||
protected readonly preferenceService: PreferenceService;
|
||||
|
||||
@inject(FrontendApplicationStateService)
|
||||
protected readonly appStateService: FrontendApplicationStateService;
|
||||
|
||||
protected readonly onDidChangeEmitter = new Emitter<Readonly<Settings>>();
|
||||
readonly onDidChange = this.onDidChangeEmitter.event;
|
||||
|
||||
protected ready = new Deferred<void>();
|
||||
protected _settings: Settings;
|
||||
|
||||
@postConstruct()
|
||||
protected async init(): Promise<void> {
|
||||
await this.appStateService.reachedState('ready'); // Hack for https://github.com/eclipse-theia/theia/issues/8993
|
||||
const settings = await this.loadSettings();
|
||||
this._settings = deepClone(settings);
|
||||
this.ready.resolve();
|
||||
}
|
||||
|
||||
protected async loadSettings(): Promise<Settings> {
|
||||
await this.preferenceService.ready;
|
||||
const [
|
||||
editorFontSize,
|
||||
themeId,
|
||||
autoSave,
|
||||
quickSuggestions,
|
||||
autoScaleInterface,
|
||||
interfaceScale,
|
||||
// checkForUpdates,
|
||||
verboseOnCompile,
|
||||
compilerWarnings,
|
||||
verboseOnUpload,
|
||||
verifyAfterUpload,
|
||||
sketchbookShowAllFiles,
|
||||
cliConfig,
|
||||
] = await Promise.all([
|
||||
this.preferenceService.get<number>(FONT_SIZE_SETTING, 12),
|
||||
this.preferenceService.get<string>(
|
||||
'workbench.colorTheme',
|
||||
'arduino-theme'
|
||||
),
|
||||
this.preferenceService.get<'on' | 'off'>(AUTO_SAVE_SETTING, 'on'),
|
||||
this.preferenceService.get<
|
||||
Record<'other' | 'comments' | 'strings', boolean>
|
||||
>(QUICK_SUGGESTIONS_SETTING, {
|
||||
other: false,
|
||||
comments: false,
|
||||
strings: false,
|
||||
}),
|
||||
this.preferenceService.get<boolean>(AUTO_SCALE_SETTING, true),
|
||||
this.preferenceService.get<number>(ZOOM_LEVEL_SETTING, 0),
|
||||
// this.preferenceService.get<string>(AUTO_UPDATE_SETTING, true),
|
||||
this.preferenceService.get<boolean>(COMPILE_VERBOSE_SETTING, true),
|
||||
this.preferenceService.get<any>(COMPILE_WARNINGS_SETTING, 'None'),
|
||||
this.preferenceService.get<boolean>(UPLOAD_VERBOSE_SETTING, true),
|
||||
this.preferenceService.get<boolean>(UPLOAD_VERIFY_SETTING, true),
|
||||
this.preferenceService.get<boolean>(SHOW_ALL_FILES_SETTING, false),
|
||||
this.configService.getConfiguration(),
|
||||
]);
|
||||
const { additionalUrls, sketchDirUri, network } = cliConfig;
|
||||
const sketchbookPath = await this.fileService.fsPath(new URI(sketchDirUri));
|
||||
return {
|
||||
editorFontSize,
|
||||
themeId,
|
||||
autoSave,
|
||||
quickSuggestions,
|
||||
autoScaleInterface,
|
||||
interfaceScale,
|
||||
// checkForUpdates,
|
||||
verboseOnCompile,
|
||||
compilerWarnings,
|
||||
verboseOnUpload,
|
||||
verifyAfterUpload,
|
||||
sketchbookShowAllFiles,
|
||||
additionalUrls,
|
||||
sketchbookPath,
|
||||
network,
|
||||
};
|
||||
}
|
||||
|
||||
async settings(): Promise<Settings> {
|
||||
await this.ready.promise;
|
||||
return this._settings;
|
||||
}
|
||||
|
||||
async update(settings: Settings, fireDidChange = false): Promise<void> {
|
||||
await this.ready.promise;
|
||||
for (const key of Object.keys(settings)) {
|
||||
this._settings[key] = settings[key];
|
||||
}
|
||||
if (fireDidChange) {
|
||||
this.onDidChangeEmitter.fire(this._settings);
|
||||
}
|
||||
}
|
||||
|
||||
async reset(): Promise<void> {
|
||||
const settings = await this.loadSettings();
|
||||
return this.update(settings, true);
|
||||
}
|
||||
|
||||
async validate(
|
||||
settings: MaybePromise<Settings> = this.settings()
|
||||
): Promise<string | true> {
|
||||
try {
|
||||
const { sketchbookPath, editorFontSize, themeId } = await settings;
|
||||
const sketchbookDir = await this.fileSystemExt.getUri(sketchbookPath);
|
||||
if (!(await this.fileService.exists(new URI(sketchbookDir)))) {
|
||||
return nls.localize(
|
||||
'arduino/preferences/invalid.sketchbook.location',
|
||||
'Invalid sketchbook location: {0}',
|
||||
sketchbookPath
|
||||
);
|
||||
}
|
||||
if (editorFontSize <= 0) {
|
||||
return nls.localize(
|
||||
'arduino/preferences/invalid.editorFontSize',
|
||||
'Invalid editor font size. It must be a positive integer.'
|
||||
);
|
||||
}
|
||||
if (
|
||||
!ThemeService.get()
|
||||
.getThemes()
|
||||
.find(({ id }) => id === themeId)
|
||||
) {
|
||||
return nls.localize(
|
||||
'arduino/preferences/invalid.theme',
|
||||
'Invalid theme.'
|
||||
);
|
||||
}
|
||||
return true;
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
return err.message;
|
||||
}
|
||||
return String(err);
|
||||
}
|
||||
}
|
||||
|
||||
async save(): Promise<string | true> {
|
||||
await this.ready.promise;
|
||||
const {
|
||||
editorFontSize,
|
||||
themeId,
|
||||
autoSave,
|
||||
quickSuggestions,
|
||||
autoScaleInterface,
|
||||
interfaceScale,
|
||||
// checkForUpdates,
|
||||
verboseOnCompile,
|
||||
compilerWarnings,
|
||||
verboseOnUpload,
|
||||
verifyAfterUpload,
|
||||
sketchbookPath,
|
||||
additionalUrls,
|
||||
network,
|
||||
sketchbookShowAllFiles,
|
||||
} = this._settings;
|
||||
const [config, sketchDirUri] = await Promise.all([
|
||||
this.configService.getConfiguration(),
|
||||
this.fileSystemExt.getUri(sketchbookPath),
|
||||
]);
|
||||
(config as any).additionalUrls = additionalUrls;
|
||||
(config as any).sketchDirUri = sketchDirUri;
|
||||
(config as any).network = network;
|
||||
|
||||
await Promise.all([
|
||||
this.preferenceService.set(
|
||||
'editor.fontSize',
|
||||
editorFontSize,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
'workbench.colorTheme',
|
||||
themeId,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
'editor.autoSave',
|
||||
autoSave,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
'editor.quickSuggestions',
|
||||
quickSuggestions,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
AUTO_SCALE_SETTING,
|
||||
autoScaleInterface,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
ZOOM_LEVEL_SETTING,
|
||||
interfaceScale,
|
||||
PreferenceScope.User
|
||||
),
|
||||
// this.preferenceService.set(AUTO_UPDATE_SETTING, checkForUpdates, PreferenceScope.User),
|
||||
this.preferenceService.set(
|
||||
COMPILE_VERBOSE_SETTING,
|
||||
verboseOnCompile,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
COMPILE_WARNINGS_SETTING,
|
||||
compilerWarnings,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
UPLOAD_VERBOSE_SETTING,
|
||||
verboseOnUpload,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
UPLOAD_VERIFY_SETTING,
|
||||
verifyAfterUpload,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
SHOW_ALL_FILES_SETTING,
|
||||
sketchbookShowAllFiles,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.configService.setConfiguration(config),
|
||||
]);
|
||||
this.onDidChangeEmitter.fire(this._settings);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} from '../../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import { Settings, SettingsService } from './settings';
|
||||
import { AdditionalUrlsDialog } from './settings-dialog';
|
||||
import { AsyncLocalizationProvider } from '@theia/core/lib/common/i18n/localization';
|
||||
|
||||
export class SettingsComponent extends React.Component<
|
||||
SettingsComponent.Props,
|
||||
@ -426,6 +124,12 @@ export class SettingsComponent extends React.Component<
|
||||
'Theme'
|
||||
) + ':'}
|
||||
</div>
|
||||
<div className="flex-line">
|
||||
{nls.localize(
|
||||
'vscode/editorStatus/status.editor.mode',
|
||||
'Language'
|
||||
) + ':'}
|
||||
</div>
|
||||
<div className="flex-line">
|
||||
{nls.localize(
|
||||
'arduino/preferences/showVerbose',
|
||||
@ -491,6 +195,27 @@ export class SettingsComponent extends React.Component<
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
<div className="flex-line">
|
||||
<select
|
||||
className="theia-select"
|
||||
value={this.state.currentLanguage}
|
||||
onChange={this.languageDidChange}
|
||||
>
|
||||
{this.state.languages.map((label) => (
|
||||
<option key={label} value={label}>
|
||||
{label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<span style={{ marginLeft: '5px' }}>
|
||||
(
|
||||
{nls.localize(
|
||||
'vscode/extensionsActions/reloadRequired',
|
||||
'Reload required'
|
||||
)}
|
||||
)
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex-line">
|
||||
<label className="flex-line">
|
||||
<input
|
||||
@ -853,6 +578,13 @@ export class SettingsComponent extends React.Component<
|
||||
}
|
||||
};
|
||||
|
||||
protected languageDidChange = (
|
||||
event: React.ChangeEvent<HTMLSelectElement>
|
||||
) => {
|
||||
const selectedLanguage = event.target.value;
|
||||
this.setState({ currentLanguage: selectedLanguage });
|
||||
};
|
||||
|
||||
protected compilerWarningsDidChange = (
|
||||
event: React.ChangeEvent<HTMLSelectElement>
|
||||
) => {
|
||||
@ -975,182 +707,7 @@ export namespace SettingsComponent {
|
||||
readonly fileService: FileService;
|
||||
readonly fileDialogService: FileDialogService;
|
||||
readonly windowService: WindowService;
|
||||
readonly localizationProvider: AsyncLocalizationProvider;
|
||||
}
|
||||
export type State = Settings;
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class SettingsWidget extends ReactWidget {
|
||||
@inject(SettingsService)
|
||||
protected readonly settingsService: SettingsService;
|
||||
|
||||
@inject(FileService)
|
||||
protected readonly fileService: FileService;
|
||||
|
||||
@inject(FileDialogService)
|
||||
protected readonly fileDialogService: FileDialogService;
|
||||
|
||||
@inject(WindowService)
|
||||
protected readonly windowService: WindowService;
|
||||
|
||||
protected render(): React.ReactNode {
|
||||
return (
|
||||
<SettingsComponent
|
||||
settingsService={this.settingsService}
|
||||
fileService={this.fileService}
|
||||
fileDialogService={this.fileDialogService}
|
||||
windowService={this.windowService}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class SettingsDialogProps extends DialogProps {}
|
||||
|
||||
@injectable()
|
||||
export class SettingsDialog extends AbstractDialog<Promise<Settings>> {
|
||||
@inject(SettingsService)
|
||||
protected readonly settingsService: SettingsService;
|
||||
|
||||
@inject(SettingsWidget)
|
||||
protected readonly widget: SettingsWidget;
|
||||
|
||||
constructor(
|
||||
@inject(SettingsDialogProps)
|
||||
protected readonly props: SettingsDialogProps
|
||||
) {
|
||||
super(props);
|
||||
this.contentNode.classList.add('arduino-settings-dialog');
|
||||
this.appendCloseButton(
|
||||
nls.localize('vscode/issueMainService/cancel', 'Cancel')
|
||||
);
|
||||
this.appendAcceptButton(nls.localize('vscode/issueMainService/ok', 'OK'));
|
||||
}
|
||||
|
||||
@postConstruct()
|
||||
protected init(): void {
|
||||
this.toDispose.push(
|
||||
this.settingsService.onDidChange(this.validate.bind(this))
|
||||
);
|
||||
}
|
||||
|
||||
protected async isValid(settings: Promise<Settings>): Promise<DialogError> {
|
||||
const result = await this.settingsService.validate(settings);
|
||||
if (typeof result === 'string') {
|
||||
return result;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
get value(): Promise<Settings> {
|
||||
return this.settingsService.settings();
|
||||
}
|
||||
|
||||
protected onAfterAttach(msg: Message): void {
|
||||
if (this.widget.isAttached) {
|
||||
Widget.detach(this.widget);
|
||||
}
|
||||
Widget.attach(this.widget, this.contentNode);
|
||||
this.toDisposeOnDetach.push(
|
||||
this.settingsService.onDidChange(() => this.update())
|
||||
);
|
||||
super.onAfterAttach(msg);
|
||||
this.update();
|
||||
}
|
||||
|
||||
protected onUpdateRequest(msg: Message) {
|
||||
super.onUpdateRequest(msg);
|
||||
this.widget.update();
|
||||
}
|
||||
|
||||
protected onActivateRequest(msg: Message): void {
|
||||
super.onActivateRequest(msg);
|
||||
|
||||
// calling settingsService.reset() in order to reload the settings from the preferenceService
|
||||
// and update the UI including changes triggerd from the command palette
|
||||
this.settingsService.reset();
|
||||
|
||||
this.widget.activate();
|
||||
}
|
||||
}
|
||||
|
||||
export class AdditionalUrlsDialog extends AbstractDialog<string[]> {
|
||||
protected readonly textArea: HTMLTextAreaElement;
|
||||
|
||||
constructor(urls: string[], windowService: WindowService) {
|
||||
super({
|
||||
title: nls.localize(
|
||||
'arduino/preferences/additionalManagerURLs',
|
||||
'Additional Boards Manager URLs'
|
||||
),
|
||||
});
|
||||
|
||||
this.contentNode.classList.add('additional-urls-dialog');
|
||||
|
||||
const description = document.createElement('div');
|
||||
description.textContent = nls.localize(
|
||||
'arduino/preferences/enterAdditionalURLs',
|
||||
'Enter additional URLs, one for each row'
|
||||
);
|
||||
description.style.marginBottom = '5px';
|
||||
this.contentNode.appendChild(description);
|
||||
|
||||
this.textArea = document.createElement('textarea');
|
||||
this.textArea.className = 'theia-input';
|
||||
this.textArea.setAttribute('style', 'flex: 0;');
|
||||
this.textArea.value = urls
|
||||
.filter((url) => url.trim())
|
||||
.filter((url) => !!url)
|
||||
.join('\n');
|
||||
this.textArea.wrap = 'soft';
|
||||
this.textArea.cols = 90;
|
||||
this.textArea.rows = 5;
|
||||
this.contentNode.appendChild(this.textArea);
|
||||
|
||||
const anchor = document.createElement('div');
|
||||
anchor.classList.add('link');
|
||||
anchor.textContent = nls.localize(
|
||||
'arduino/preferences/unofficialBoardSupport',
|
||||
'Click for a list of unofficial board support URLs'
|
||||
);
|
||||
anchor.style.marginTop = '5px';
|
||||
anchor.style.cursor = 'pointer';
|
||||
this.addEventListener(anchor, 'click', () =>
|
||||
windowService.openNewWindow(
|
||||
'https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls',
|
||||
{ external: true }
|
||||
)
|
||||
);
|
||||
this.contentNode.appendChild(anchor);
|
||||
|
||||
this.appendAcceptButton(nls.localize('vscode/issueMainService/ok', 'OK'));
|
||||
this.appendCloseButton(
|
||||
nls.localize('vscode/issueMainService/cancel', 'Cancel')
|
||||
);
|
||||
}
|
||||
|
||||
get value(): string[] {
|
||||
return this.textArea.value
|
||||
.split('\n')
|
||||
.map((url) => url.trim())
|
||||
.filter((url) => !!url);
|
||||
}
|
||||
|
||||
protected onAfterAttach(message: Message): void {
|
||||
super.onAfterAttach(message);
|
||||
this.addUpdateListener(this.textArea, 'input');
|
||||
}
|
||||
|
||||
protected onActivateRequest(message: Message): void {
|
||||
super.onActivateRequest(message);
|
||||
this.textArea.focus();
|
||||
}
|
||||
|
||||
protected handleEnter(event: KeyboardEvent): boolean | void {
|
||||
if (event.target instanceof HTMLInputElement) {
|
||||
return super.handleEnter(event);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
export type State = Settings & { languages: string[] };
|
||||
}
|
@ -0,0 +1,193 @@
|
||||
import * as React from 'react';
|
||||
import { injectable, inject, postConstruct } from 'inversify';
|
||||
import { Widget } from '@phosphor/widgets';
|
||||
import { Message } from '@phosphor/messaging';
|
||||
import { DialogError, ReactWidget } from '@theia/core/lib/browser';
|
||||
import { AbstractDialog, DialogProps } from '@theia/core/lib/browser';
|
||||
import { Settings, SettingsService } from './settings';
|
||||
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
||||
import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
||||
import { FileDialogService } from '@theia/filesystem/lib/browser/file-dialog/file-dialog-service';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import { SettingsComponent } from './settings-component';
|
||||
import { AsyncLocalizationProvider } from '@theia/core/lib/common/i18n/localization';
|
||||
|
||||
@injectable()
|
||||
export class SettingsWidget extends ReactWidget {
|
||||
@inject(SettingsService)
|
||||
protected readonly settingsService: SettingsService;
|
||||
|
||||
@inject(FileService)
|
||||
protected readonly fileService: FileService;
|
||||
|
||||
@inject(FileDialogService)
|
||||
protected readonly fileDialogService: FileDialogService;
|
||||
|
||||
@inject(WindowService)
|
||||
protected readonly windowService: WindowService;
|
||||
|
||||
@inject(AsyncLocalizationProvider)
|
||||
protected readonly localizationProvider: AsyncLocalizationProvider;
|
||||
|
||||
protected render(): React.ReactNode {
|
||||
return (
|
||||
<SettingsComponent
|
||||
settingsService={this.settingsService}
|
||||
fileService={this.fileService}
|
||||
fileDialogService={this.fileDialogService}
|
||||
windowService={this.windowService}
|
||||
localizationProvider={this.localizationProvider}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class SettingsDialogProps extends DialogProps {}
|
||||
|
||||
@injectable()
|
||||
export class SettingsDialog extends AbstractDialog<Promise<Settings>> {
|
||||
@inject(SettingsService)
|
||||
protected readonly settingsService: SettingsService;
|
||||
|
||||
@inject(SettingsWidget)
|
||||
protected readonly widget: SettingsWidget;
|
||||
|
||||
constructor(
|
||||
@inject(SettingsDialogProps)
|
||||
protected readonly props: SettingsDialogProps
|
||||
) {
|
||||
super(props);
|
||||
this.contentNode.classList.add('arduino-settings-dialog');
|
||||
this.appendCloseButton(
|
||||
nls.localize('vscode/issueMainService/cancel', 'Cancel')
|
||||
);
|
||||
this.appendAcceptButton(nls.localize('vscode/issueMainService/ok', 'OK'));
|
||||
}
|
||||
|
||||
@postConstruct()
|
||||
protected init(): void {
|
||||
this.toDispose.push(
|
||||
this.settingsService.onDidChange(this.validate.bind(this))
|
||||
);
|
||||
}
|
||||
|
||||
protected async isValid(settings: Promise<Settings>): Promise<DialogError> {
|
||||
const result = await this.settingsService.validate(settings);
|
||||
if (typeof result === 'string') {
|
||||
return result;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
get value(): Promise<Settings> {
|
||||
return this.settingsService.settings();
|
||||
}
|
||||
|
||||
protected onAfterAttach(msg: Message): void {
|
||||
if (this.widget.isAttached) {
|
||||
Widget.detach(this.widget);
|
||||
}
|
||||
Widget.attach(this.widget, this.contentNode);
|
||||
this.toDisposeOnDetach.push(
|
||||
this.settingsService.onDidChange(() => this.update())
|
||||
);
|
||||
super.onAfterAttach(msg);
|
||||
this.update();
|
||||
}
|
||||
|
||||
protected onUpdateRequest(msg: Message) {
|
||||
super.onUpdateRequest(msg);
|
||||
this.widget.update();
|
||||
}
|
||||
|
||||
protected onActivateRequest(msg: Message): void {
|
||||
super.onActivateRequest(msg);
|
||||
|
||||
// calling settingsService.reset() in order to reload the settings from the preferenceService
|
||||
// and update the UI including changes triggerd from the command palette
|
||||
this.settingsService.reset();
|
||||
|
||||
this.widget.activate();
|
||||
}
|
||||
}
|
||||
|
||||
export class AdditionalUrlsDialog extends AbstractDialog<string[]> {
|
||||
protected readonly textArea: HTMLTextAreaElement;
|
||||
|
||||
constructor(urls: string[], windowService: WindowService) {
|
||||
super({
|
||||
title: nls.localize(
|
||||
'arduino/preferences/additionalManagerURLs',
|
||||
'Additional Boards Manager URLs'
|
||||
),
|
||||
});
|
||||
|
||||
this.contentNode.classList.add('additional-urls-dialog');
|
||||
|
||||
const description = document.createElement('div');
|
||||
description.textContent = nls.localize(
|
||||
'arduino/preferences/enterAdditionalURLs',
|
||||
'Enter additional URLs, one for each row'
|
||||
);
|
||||
description.style.marginBottom = '5px';
|
||||
this.contentNode.appendChild(description);
|
||||
|
||||
this.textArea = document.createElement('textarea');
|
||||
this.textArea.className = 'theia-input';
|
||||
this.textArea.setAttribute('style', 'flex: 0;');
|
||||
this.textArea.value = urls
|
||||
.filter((url) => url.trim())
|
||||
.filter((url) => !!url)
|
||||
.join('\n');
|
||||
this.textArea.wrap = 'soft';
|
||||
this.textArea.cols = 90;
|
||||
this.textArea.rows = 5;
|
||||
this.contentNode.appendChild(this.textArea);
|
||||
|
||||
const anchor = document.createElement('div');
|
||||
anchor.classList.add('link');
|
||||
anchor.textContent = nls.localize(
|
||||
'arduino/preferences/unofficialBoardSupport',
|
||||
'Click for a list of unofficial board support URLs'
|
||||
);
|
||||
anchor.style.marginTop = '5px';
|
||||
anchor.style.cursor = 'pointer';
|
||||
this.addEventListener(anchor, 'click', () =>
|
||||
windowService.openNewWindow(
|
||||
'https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls',
|
||||
{ external: true }
|
||||
)
|
||||
);
|
||||
this.contentNode.appendChild(anchor);
|
||||
|
||||
this.appendAcceptButton(nls.localize('vscode/issueMainService/ok', 'OK'));
|
||||
this.appendCloseButton(
|
||||
nls.localize('vscode/issueMainService/cancel', 'Cancel')
|
||||
);
|
||||
}
|
||||
|
||||
get value(): string[] {
|
||||
return this.textArea.value
|
||||
.split('\n')
|
||||
.map((url) => url.trim())
|
||||
.filter((url) => !!url);
|
||||
}
|
||||
|
||||
protected onAfterAttach(message: Message): void {
|
||||
super.onAfterAttach(message);
|
||||
this.addUpdateListener(this.textArea, 'input');
|
||||
}
|
||||
|
||||
protected onActivateRequest(message: Message): void {
|
||||
super.onActivateRequest(message);
|
||||
this.textArea.focus();
|
||||
}
|
||||
|
||||
protected handleEnter(event: KeyboardEvent): boolean | void {
|
||||
if (event.target instanceof HTMLInputElement) {
|
||||
return super.handleEnter(event);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
325
arduino-ide-extension/src/browser/dialogs/settings/settings.tsx
Normal file
325
arduino-ide-extension/src/browser/dialogs/settings/settings.tsx
Normal file
@ -0,0 +1,325 @@
|
||||
import { injectable, inject, postConstruct } from 'inversify';
|
||||
import URI from '@theia/core/lib/common/uri';
|
||||
import { Emitter } from '@theia/core/lib/common/event';
|
||||
import { Deferred } from '@theia/core/lib/common/promise-util';
|
||||
import { deepClone } from '@theia/core/lib/common/objects';
|
||||
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
||||
import { ThemeService } from '@theia/core/lib/browser/theming';
|
||||
import { MaybePromise } from '@theia/core/lib/common/types';
|
||||
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
|
||||
import { PreferenceService, PreferenceScope } from '@theia/core/lib/browser';
|
||||
import { Index } from '../../../common/types';
|
||||
import {
|
||||
CompilerWarnings,
|
||||
ConfigService,
|
||||
FileSystemExt,
|
||||
Network,
|
||||
} from '../../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import { AsyncLocalizationProvider } from '@theia/core/lib/common/i18n/localization';
|
||||
|
||||
const EDITOR_SETTING = 'editor';
|
||||
const FONT_SIZE_SETTING = `${EDITOR_SETTING}.fontSize`;
|
||||
const AUTO_SAVE_SETTING = `${EDITOR_SETTING}.autoSave`;
|
||||
const QUICK_SUGGESTIONS_SETTING = `${EDITOR_SETTING}.quickSuggestions`;
|
||||
const ARDUINO_SETTING = 'arduino';
|
||||
const WINDOW_SETTING = `${ARDUINO_SETTING}.window`;
|
||||
// const IDE_SETTING = `${ARDUINO_SETTING}.ide`;
|
||||
const COMPILE_SETTING = `${ARDUINO_SETTING}.compile`;
|
||||
const UPLOAD_SETTING = `${ARDUINO_SETTING}.upload`;
|
||||
const SKETCHBOOK_SETTING = `${ARDUINO_SETTING}.sketchbook`;
|
||||
const AUTO_SCALE_SETTING = `${WINDOW_SETTING}.autoScale`;
|
||||
const ZOOM_LEVEL_SETTING = `${WINDOW_SETTING}.zoomLevel`;
|
||||
// const AUTO_UPDATE_SETTING = `${IDE_SETTING}.autoUpdate`;
|
||||
const COMPILE_VERBOSE_SETTING = `${COMPILE_SETTING}.verbose`;
|
||||
const COMPILE_WARNINGS_SETTING = `${COMPILE_SETTING}.warnings`;
|
||||
const UPLOAD_VERBOSE_SETTING = `${UPLOAD_SETTING}.verbose`;
|
||||
const UPLOAD_VERIFY_SETTING = `${UPLOAD_SETTING}.verify`;
|
||||
const SHOW_ALL_FILES_SETTING = `${SKETCHBOOK_SETTING}.showAllFiles`;
|
||||
|
||||
export interface Settings extends Index {
|
||||
editorFontSize: number; // `editor.fontSize`
|
||||
themeId: string; // `workbench.colorTheme`
|
||||
autoSave: 'on' | 'off'; // `editor.autoSave`
|
||||
quickSuggestions: Record<'other' | 'comments' | 'strings', boolean>; // `editor.quickSuggestions`
|
||||
|
||||
languages: string[]; // `languages from the plugins`
|
||||
currentLanguage: string;
|
||||
|
||||
autoScaleInterface: boolean; // `arduino.window.autoScale`
|
||||
interfaceScale: number; // `arduino.window.zoomLevel` https://github.com/eclipse-theia/theia/issues/8751
|
||||
checkForUpdates?: boolean; // `arduino.ide.autoUpdate`
|
||||
verboseOnCompile: boolean; // `arduino.compile.verbose`
|
||||
compilerWarnings: CompilerWarnings; // `arduino.compile.warnings`
|
||||
verboseOnUpload: boolean; // `arduino.upload.verbose`
|
||||
verifyAfterUpload: boolean; // `arduino.upload.verify`
|
||||
sketchbookShowAllFiles: boolean; // `arduino.sketchbook.showAllFiles`
|
||||
|
||||
sketchbookPath: string; // CLI
|
||||
additionalUrls: string[]; // CLI
|
||||
network: Network; // CLI
|
||||
}
|
||||
export namespace Settings {
|
||||
export function belongsToCli<K extends keyof Settings>(key: K): boolean {
|
||||
return key === 'sketchbookPath' || key === 'additionalUrls';
|
||||
}
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class SettingsService {
|
||||
@inject(FileService)
|
||||
protected readonly fileService: FileService;
|
||||
|
||||
@inject(FileSystemExt)
|
||||
protected readonly fileSystemExt: FileSystemExt;
|
||||
|
||||
@inject(ConfigService)
|
||||
protected readonly configService: ConfigService;
|
||||
|
||||
@inject(PreferenceService)
|
||||
protected readonly preferenceService: PreferenceService;
|
||||
|
||||
@inject(FrontendApplicationStateService)
|
||||
protected readonly appStateService: FrontendApplicationStateService;
|
||||
|
||||
@inject(AsyncLocalizationProvider)
|
||||
protected readonly localizationProvider: AsyncLocalizationProvider;
|
||||
|
||||
protected readonly onDidChangeEmitter = new Emitter<Readonly<Settings>>();
|
||||
readonly onDidChange = this.onDidChangeEmitter.event;
|
||||
|
||||
protected ready = new Deferred<void>();
|
||||
protected _settings: Settings;
|
||||
|
||||
@postConstruct()
|
||||
protected async init(): Promise<void> {
|
||||
await this.appStateService.reachedState('ready'); // Hack for https://github.com/eclipse-theia/theia/issues/8993
|
||||
const settings = await this.loadSettings();
|
||||
this._settings = deepClone(settings);
|
||||
this.ready.resolve();
|
||||
}
|
||||
|
||||
protected async loadSettings(): Promise<Settings> {
|
||||
await this.preferenceService.ready;
|
||||
const [
|
||||
languages,
|
||||
currentLanguage,
|
||||
editorFontSize,
|
||||
themeId,
|
||||
autoSave,
|
||||
quickSuggestions,
|
||||
autoScaleInterface,
|
||||
interfaceScale,
|
||||
// checkForUpdates,
|
||||
verboseOnCompile,
|
||||
compilerWarnings,
|
||||
verboseOnUpload,
|
||||
verifyAfterUpload,
|
||||
sketchbookShowAllFiles,
|
||||
cliConfig,
|
||||
] = await Promise.all([
|
||||
['en', ...(await this.localizationProvider.getAvailableLanguages())],
|
||||
this.localizationProvider.getCurrentLanguage(),
|
||||
this.preferenceService.get<number>(FONT_SIZE_SETTING, 12),
|
||||
this.preferenceService.get<string>(
|
||||
'workbench.colorTheme',
|
||||
'arduino-theme'
|
||||
),
|
||||
this.preferenceService.get<'on' | 'off'>(AUTO_SAVE_SETTING, 'on'),
|
||||
this.preferenceService.get<
|
||||
Record<'other' | 'comments' | 'strings', boolean>
|
||||
>(QUICK_SUGGESTIONS_SETTING, {
|
||||
other: false,
|
||||
comments: false,
|
||||
strings: false,
|
||||
}),
|
||||
this.preferenceService.get<boolean>(AUTO_SCALE_SETTING, true),
|
||||
this.preferenceService.get<number>(ZOOM_LEVEL_SETTING, 0),
|
||||
// this.preferenceService.get<string>(AUTO_UPDATE_SETTING, true),
|
||||
this.preferenceService.get<boolean>(COMPILE_VERBOSE_SETTING, true),
|
||||
this.preferenceService.get<any>(COMPILE_WARNINGS_SETTING, 'None'),
|
||||
this.preferenceService.get<boolean>(UPLOAD_VERBOSE_SETTING, true),
|
||||
this.preferenceService.get<boolean>(UPLOAD_VERIFY_SETTING, true),
|
||||
this.preferenceService.get<boolean>(SHOW_ALL_FILES_SETTING, false),
|
||||
this.configService.getConfiguration(),
|
||||
]);
|
||||
const { additionalUrls, sketchDirUri, network } = cliConfig;
|
||||
const sketchbookPath = await this.fileService.fsPath(new URI(sketchDirUri));
|
||||
return {
|
||||
editorFontSize,
|
||||
themeId,
|
||||
languages,
|
||||
currentLanguage,
|
||||
autoSave,
|
||||
quickSuggestions,
|
||||
autoScaleInterface,
|
||||
interfaceScale,
|
||||
// checkForUpdates,
|
||||
verboseOnCompile,
|
||||
compilerWarnings,
|
||||
verboseOnUpload,
|
||||
verifyAfterUpload,
|
||||
sketchbookShowAllFiles,
|
||||
additionalUrls,
|
||||
sketchbookPath,
|
||||
network,
|
||||
};
|
||||
}
|
||||
|
||||
async settings(): Promise<Settings> {
|
||||
await this.ready.promise;
|
||||
return this._settings;
|
||||
}
|
||||
|
||||
async update(settings: Settings, fireDidChange = false): Promise<void> {
|
||||
await this.ready.promise;
|
||||
for (const key of Object.keys(settings)) {
|
||||
this._settings[key] = settings[key];
|
||||
}
|
||||
if (fireDidChange) {
|
||||
this.onDidChangeEmitter.fire(this._settings);
|
||||
}
|
||||
}
|
||||
|
||||
async reset(): Promise<void> {
|
||||
const settings = await this.loadSettings();
|
||||
return this.update(settings, true);
|
||||
}
|
||||
|
||||
async validate(
|
||||
settings: MaybePromise<Settings> = this.settings()
|
||||
): Promise<string | true> {
|
||||
try {
|
||||
const { sketchbookPath, editorFontSize, themeId } = await settings;
|
||||
const sketchbookDir = await this.fileSystemExt.getUri(sketchbookPath);
|
||||
if (!(await this.fileService.exists(new URI(sketchbookDir)))) {
|
||||
return nls.localize(
|
||||
'arduino/preferences/invalid.sketchbook.location',
|
||||
'Invalid sketchbook location: {0}',
|
||||
sketchbookPath
|
||||
);
|
||||
}
|
||||
if (editorFontSize <= 0) {
|
||||
return nls.localize(
|
||||
'arduino/preferences/invalid.editorFontSize',
|
||||
'Invalid editor font size. It must be a positive integer.'
|
||||
);
|
||||
}
|
||||
if (
|
||||
!ThemeService.get()
|
||||
.getThemes()
|
||||
.find(({ id }) => id === themeId)
|
||||
) {
|
||||
return nls.localize(
|
||||
'arduino/preferences/invalid.theme',
|
||||
'Invalid theme.'
|
||||
);
|
||||
}
|
||||
return true;
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
return err.message;
|
||||
}
|
||||
return String(err);
|
||||
}
|
||||
}
|
||||
|
||||
async save(): Promise<string | true> {
|
||||
await this.ready.promise;
|
||||
const {
|
||||
currentLanguage,
|
||||
editorFontSize,
|
||||
themeId,
|
||||
autoSave,
|
||||
quickSuggestions,
|
||||
autoScaleInterface,
|
||||
interfaceScale,
|
||||
// checkForUpdates,
|
||||
verboseOnCompile,
|
||||
compilerWarnings,
|
||||
verboseOnUpload,
|
||||
verifyAfterUpload,
|
||||
sketchbookPath,
|
||||
additionalUrls,
|
||||
network,
|
||||
sketchbookShowAllFiles,
|
||||
} = this._settings;
|
||||
const [config, sketchDirUri] = await Promise.all([
|
||||
this.configService.getConfiguration(),
|
||||
this.fileSystemExt.getUri(sketchbookPath),
|
||||
]);
|
||||
(config as any).additionalUrls = additionalUrls;
|
||||
(config as any).sketchDirUri = sketchDirUri;
|
||||
(config as any).network = network;
|
||||
(config as any).locale = currentLanguage;
|
||||
|
||||
await Promise.all([
|
||||
this.preferenceService.set(
|
||||
'editor.fontSize',
|
||||
editorFontSize,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
'workbench.colorTheme',
|
||||
themeId,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
'editor.autoSave',
|
||||
autoSave,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
'editor.quickSuggestions',
|
||||
quickSuggestions,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
AUTO_SCALE_SETTING,
|
||||
autoScaleInterface,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
ZOOM_LEVEL_SETTING,
|
||||
interfaceScale,
|
||||
PreferenceScope.User
|
||||
),
|
||||
// this.preferenceService.set(AUTO_UPDATE_SETTING, checkForUpdates, PreferenceScope.User),
|
||||
this.preferenceService.set(
|
||||
COMPILE_VERBOSE_SETTING,
|
||||
verboseOnCompile,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
COMPILE_WARNINGS_SETTING,
|
||||
compilerWarnings,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
UPLOAD_VERBOSE_SETTING,
|
||||
verboseOnUpload,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
UPLOAD_VERIFY_SETTING,
|
||||
verifyAfterUpload,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.preferenceService.set(
|
||||
SHOW_ALL_FILES_SETTING,
|
||||
sketchbookShowAllFiles,
|
||||
PreferenceScope.User
|
||||
),
|
||||
this.configService.setConfiguration(config),
|
||||
]);
|
||||
this.onDidChangeEmitter.fire(this._settings);
|
||||
|
||||
// after saving all the settings, if we need to change the language we need to perform a reload
|
||||
if (currentLanguage !== nls.locale) {
|
||||
window.localStorage.setItem(nls.localeId, currentLanguage);
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
import * as React from 'react';
|
||||
import { BoardUserField } from '../../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export const UserFieldsComponent = ({
|
||||
initialBoardUserFields,
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
import { ListWidget } from '../widgets/component-list/list-widget';
|
||||
import { Installable } from '../../common/protocol';
|
||||
import { ListItemRenderer } from '../widgets/component-list/list-item-renderer';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class LibraryListWidget extends ListWidget<LibraryPackage> {
|
||||
|
@ -4,7 +4,7 @@ import { AbstractViewContribution } from '@theia/core/lib/browser/shell/view-con
|
||||
import { MenuModelRegistry } from '@theia/core';
|
||||
import { LibraryListWidget } from './library-list-widget';
|
||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class LibraryListWidgetFrontendContribution
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { Emitter } from '@theia/core/lib/common/event';
|
||||
import { OutputContribution } from '@theia/output/lib/browser/output-contribution';
|
||||
import { OutputChannelManager } from '@theia/output/lib/common/output-channel';
|
||||
import { OutputChannelManager } from '@theia/output/lib/browser/output-channel';
|
||||
import {
|
||||
OutputMessage,
|
||||
ProgressMessage,
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
import { ArduinoToolbar } from '../../toolbar/arduino-toolbar';
|
||||
import { SerialModel } from '../serial-model';
|
||||
import { ArduinoMenus } from '../../menu/arduino-menus';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export namespace SerialMonitor {
|
||||
export namespace Commands {
|
||||
|
@ -15,8 +15,8 @@ import { SerialModel } from '../serial-model';
|
||||
import { Serial, SerialConnectionManager } from '../serial-connection-manager';
|
||||
import { SerialMonitorSendInput } from './serial-monitor-send-input';
|
||||
import { SerialMonitorOutput } from './serial-monitor-send-output';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { BoardsServiceProvider } from '../../boards/boards-service-provider';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class MonitorWidget extends ReactWidget {
|
||||
|
@ -3,7 +3,7 @@ import { Key, KeyCode } from '@theia/core/lib/browser/keys';
|
||||
import { Board, Port } from '../../../common/protocol/boards-service';
|
||||
import { SerialConfig } from '../../../common/protocol/serial-service';
|
||||
import { isOSX } from '@theia/core/lib/common/os';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export namespace SerialMonitorSendInput {
|
||||
export interface Props {
|
||||
|
@ -18,8 +18,8 @@ import {
|
||||
import { BoardsConfig } from '../boards/boards-config';
|
||||
import { SerialModel } from './serial-model';
|
||||
import { ThemeService } from '@theia/core/lib/browser/theming';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { CoreService } from '../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/common/nls';
|
||||
|
||||
@injectable()
|
||||
export class SerialConnectionManager {
|
||||
|
@ -15,7 +15,7 @@ import {
|
||||
import { Sketch } from '../../../common/protocol';
|
||||
import { SaveAsSketch } from '../../contributions/save-as-sketch';
|
||||
import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class ApplicationShell extends TheiaApplicationShell {
|
||||
|
@ -4,9 +4,18 @@ import {
|
||||
CommonFrontendContribution as TheiaCommonFrontendContribution,
|
||||
CommonCommands,
|
||||
} from '@theia/core/lib/browser/common-frontend-contribution';
|
||||
import { CommandRegistry } from '@theia/core/lib/common/command';
|
||||
|
||||
@injectable()
|
||||
export class CommonFrontendContribution extends TheiaCommonFrontendContribution {
|
||||
registerCommands(commandRegistry: CommandRegistry): void {
|
||||
super.registerCommands(commandRegistry);
|
||||
|
||||
for (const command of [CommonCommands.CONFIGURE_DISPLAY_LANGUAGE]) {
|
||||
commandRegistry.unregisterCommand(command);
|
||||
}
|
||||
}
|
||||
|
||||
registerMenus(registry: MenuModelRegistry): void {
|
||||
super.registerMenus(registry);
|
||||
for (const command of [
|
||||
|
@ -8,7 +8,7 @@ import {
|
||||
} from '@theia/core/lib/browser/connection-status-service';
|
||||
import { ArduinoDaemon } from '../../../common/protocol';
|
||||
import { NotificationCenter } from '../../notification-center';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class FrontendConnectionStatusService extends TheiaFrontendConnectionStatusService {
|
||||
|
@ -3,7 +3,7 @@ import { DebugError } from '@theia/debug/lib/common/debug-service';
|
||||
import { DebugSession } from '@theia/debug/lib/browser/debug-session';
|
||||
import { DebugSessionOptions } from '@theia/debug/lib/browser/debug-session-options';
|
||||
import { DebugSessionManager as TheiaDebugSessionManager } from '@theia/debug/lib/browser/debug-session-manager';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class DebugSessionManager extends TheiaDebugSessionManager {
|
||||
|
@ -5,7 +5,7 @@ import { LabelProvider } from '@theia/core/lib/browser';
|
||||
import { EditorWidgetFactory as TheiaEditorWidgetFactory } from '@theia/editor/lib/browser/editor-widget-factory';
|
||||
import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl';
|
||||
import { SketchesService, Sketch } from '../../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class EditorWidgetFactory extends TheiaEditorWidgetFactory {
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
KeymapsCommands,
|
||||
} from '@theia/keymaps/lib/browser/keymaps-frontend-contribution';
|
||||
import { ArduinoMenus } from '../../menu/arduino-menus';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class KeymapsFrontendContribution extends TheiaKeymapsFrontendContribution {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import * as React from 'react';
|
||||
import { NotificationComponent } from './notification-component';
|
||||
import { NotificationCenterComponent as TheiaNotificationCenterComponent } from '@theia/messages/lib/browser/notification-center-component';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
const PerfectScrollbar = require('react-perfect-scrollbar');
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import * as React from 'react';
|
||||
import { NotificationComponent as TheiaNotificationComponent } from '@theia/messages/lib/browser/notification-component';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export class NotificationComponent extends TheiaNotificationComponent {
|
||||
render(): React.ReactNode {
|
||||
|
@ -7,7 +7,7 @@ import { MonacoEditorModel } from '@theia/monaco/lib/browser/monaco-editor-model
|
||||
import {
|
||||
OutputChannelManager as TheiaOutputChannelManager,
|
||||
OutputChannel as TheiaOutputChannel,
|
||||
} from '@theia/output/lib/common/output-channel';
|
||||
} from '@theia/output/lib/browser/output-channel';
|
||||
|
||||
@injectable()
|
||||
export class OutputChannelManager extends TheiaOutputChannelManager {
|
||||
|
@ -0,0 +1,19 @@
|
||||
import { ViewContainer } from '@theia/core/lib/browser/view-container';
|
||||
import { injectable } from '@theia/core/shared/inversify';
|
||||
|
||||
import {
|
||||
SearchInWorkspaceFactory as TheiaSearchInWorkspaceFactory,
|
||||
SEARCH_VIEW_CONTAINER_TITLE_OPTIONS,
|
||||
} from '@theia/search-in-workspace/lib/browser/search-in-workspace-factory';
|
||||
|
||||
@injectable()
|
||||
export class SearchInWorkspaceFactory extends TheiaSearchInWorkspaceFactory {
|
||||
async createWidget(): Promise<ViewContainer> {
|
||||
const viewContainer = await super.createWidget();
|
||||
viewContainer.setTitleOptions({
|
||||
...SEARCH_VIEW_CONTAINER_TITLE_OPTIONS,
|
||||
iconClass: 'fa fa-arduino-search',
|
||||
});
|
||||
return viewContainer;
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@ import { WorkspaceInputDialog } from './workspace-input-dialog';
|
||||
import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl';
|
||||
import { SaveAsSketch } from '../../contributions/save-as-sketch';
|
||||
import { SingleTextInputDialog } from '@theia/core/lib/browser';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class WorkspaceCommandContribution extends TheiaWorkspaceCommandContribution {
|
||||
|
@ -3,7 +3,7 @@ import { remote } from 'electron';
|
||||
import URI from '@theia/core/lib/common/uri';
|
||||
import { WorkspaceDeleteHandler as TheiaWorkspaceDeleteHandler } from '@theia/workspace/lib/browser/workspace-delete-handler';
|
||||
import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class WorkspaceDeleteHandler extends TheiaWorkspaceDeleteHandler {
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
WorkspaceInputDialog as TheiaWorkspaceInputDialog,
|
||||
WorkspaceInputDialogProps,
|
||||
} from '@theia/workspace/lib/browser/workspace-input-dialog';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export class WorkspaceInputDialog extends TheiaWorkspaceInputDialog {
|
||||
protected wasTouched = false;
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
import { ArduinoWorkspaceRootResolver } from '../../arduino-workspace-resolver';
|
||||
import { BoardsServiceProvider } from '../../boards/boards-service-provider';
|
||||
import { BoardsConfig } from '../../boards/boards-config';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class WorkspaceService extends TheiaWorkspaceService {
|
||||
|
@ -9,7 +9,7 @@ import { UserStatus } from './cloud-user-status';
|
||||
import { CloudSketchbookTreeWidget } from './cloud-sketchbook-tree-widget';
|
||||
import { AuthenticationClientService } from '../../auth/authentication-client-service';
|
||||
import { CloudSketchbookTreeModel } from './cloud-sketchbook-tree-model';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class CloudSketchbookCompositeWidget extends BaseWidget {
|
||||
|
@ -27,7 +27,7 @@ import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-ser
|
||||
import { Contribution } from '../../contributions/contribution';
|
||||
import { ArduinoPreferences } from '../../arduino-preferences';
|
||||
import { MainMenuManager } from '../../../common/main-menu-manager';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export const SKETCHBOOKSYNC__CONTEXT = ['arduino-sketchbook-sync--context'];
|
||||
|
||||
|
@ -14,7 +14,7 @@ import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
||||
import URI from '@theia/core/lib/common/uri';
|
||||
import { SketchCache } from './cloud-sketch-cache';
|
||||
import { Create } from '../../create/typings';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export function sketchBaseDir(sketch: Create.Sketch): FileStat {
|
||||
// extract the sketch path
|
||||
|
@ -11,7 +11,7 @@ import { TreeNode } from '@theia/core/lib/browser/tree';
|
||||
import { CompositeTreeNode } from '@theia/core/lib/browser';
|
||||
import { shell } from 'electron';
|
||||
import { SketchbookTreeWidget } from '../sketchbook/sketchbook-tree-widget';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
const LEARN_MORE_URL =
|
||||
'https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-cloud-sketch-sync';
|
||||
|
@ -34,7 +34,7 @@ import { FileStat } from '@theia/filesystem/lib/common/files';
|
||||
import { WorkspaceNode } from '@theia/navigator/lib/browser/navigator-tree';
|
||||
import { posix, splitSketchPath } from '../../create/create-paths';
|
||||
import { Create } from '../../create/typings';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
const MESSAGE_TIMEOUT = 5 * 1000;
|
||||
const deepmerge = require('deepmerge').default;
|
||||
|
@ -7,7 +7,7 @@ import { CloudSketchbookTreeModel } from './cloud-sketchbook-tree-model';
|
||||
import { AuthenticationClientService } from '../../auth/authentication-client-service';
|
||||
import { CloudUserCommands } from '../../auth/cloud-user-commands';
|
||||
import { AuthenticationSessionAccountInformation } from '../../../common/protocol/authentication-service';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export class UserStatus extends React.Component<
|
||||
UserStatus.Props,
|
||||
|
@ -12,7 +12,7 @@ import { ListWidget } from './list-widget';
|
||||
import { ComponentList } from './component-list';
|
||||
import { ListItemRenderer } from './list-item-renderer';
|
||||
import { ResponseServiceArduino } from '../../../common/protocol';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
export class FilterableListContainer<
|
||||
T extends ArduinoComponent
|
||||
|
@ -4,7 +4,7 @@ import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
||||
import { Installable } from '../../../common/protocol/installable';
|
||||
import { ArduinoComponent } from '../../../common/protocol/arduino-component';
|
||||
import { ComponentListItem } from './component-list-item';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class ListItemRenderer<T extends ArduinoComponent> {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
import * as React from 'react';
|
||||
|
||||
export class SearchBar extends React.Component<SearchBar.Props> {
|
||||
|
@ -17,7 +17,7 @@ import { ArduinoPreferences } from '../../arduino-preferences';
|
||||
import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl';
|
||||
import { SelectableTreeNode } from '@theia/core/lib/browser/tree/tree-selection';
|
||||
import { Sketch } from '../../contributions/contribution';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class SketchbookTreeWidget extends FileTreeWidget {
|
||||
|
@ -6,7 +6,7 @@ import { Message, MessageLoop } from '@phosphor/messaging';
|
||||
import { Disposable } from '@theia/core/lib/common/disposable';
|
||||
import { BaseWidget } from '@theia/core/lib/browser/widgets/widget';
|
||||
import { SketchbookTreeWidget } from './sketchbook-tree-widget';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class SketchbookWidget extends BaseWidget {
|
||||
|
@ -1,3 +1,5 @@
|
||||
import { RecursivePartial } from '@theia/core/lib/common/types';
|
||||
|
||||
export const ConfigServicePath = '/services/config-service';
|
||||
export const ConfigService = Symbol('ConfigService');
|
||||
export interface ConfigService {
|
||||
@ -11,6 +13,29 @@ export interface ConfigService {
|
||||
isInSketchDir(uri: string): Promise<boolean>;
|
||||
}
|
||||
|
||||
export interface Daemon {
|
||||
readonly port: string | number;
|
||||
}
|
||||
export namespace Daemon {
|
||||
export function is(
|
||||
daemon: RecursivePartial<Daemon> | undefined
|
||||
): daemon is Daemon {
|
||||
return !!daemon && !!daemon.port;
|
||||
}
|
||||
export function sameAs(
|
||||
left: RecursivePartial<Daemon> | undefined,
|
||||
right: RecursivePartial<Daemon> | undefined
|
||||
): boolean {
|
||||
if (left === undefined) {
|
||||
return right === undefined;
|
||||
}
|
||||
if (right === undefined) {
|
||||
return left === undefined;
|
||||
}
|
||||
return String(left.port) === String(right.port);
|
||||
}
|
||||
}
|
||||
|
||||
export interface ProxySettings {
|
||||
protocol: string;
|
||||
hostname: string;
|
||||
@ -87,11 +112,13 @@ export namespace Network {
|
||||
}
|
||||
|
||||
export interface Config {
|
||||
readonly locale: string;
|
||||
readonly sketchDirUri: string;
|
||||
readonly dataDirUri: string;
|
||||
readonly downloadsDirUri: string;
|
||||
readonly additionalUrls: string[];
|
||||
readonly network: Network;
|
||||
readonly daemon: Daemon;
|
||||
}
|
||||
export namespace Config {
|
||||
export function sameAs(left: Config, right: Config): boolean {
|
||||
@ -106,6 +133,7 @@ export namespace Config {
|
||||
}
|
||||
}
|
||||
return (
|
||||
left.locale === right.locale &&
|
||||
left.dataDirUri === right.dataDirUri &&
|
||||
left.downloadsDirUri === right.downloadsDirUri &&
|
||||
left.sketchDirUri === right.sketchDirUri &&
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
} from '@theia/core/lib/browser/connection-status-service';
|
||||
import { ElectronWindowService as TheiaElectronWindowService } from '@theia/core/lib/electron-browser/window/electron-window-service';
|
||||
import { SplashService } from '../electron-common/splash-service';
|
||||
import { nls } from '@theia/core/lib/browser/nls';
|
||||
import { nls } from '@theia/core/lib/common';
|
||||
|
||||
@injectable()
|
||||
export class ElectronWindowService extends TheiaElectronWindowService {
|
||||
|
@ -15,10 +15,11 @@ import {
|
||||
ArduinoMenus,
|
||||
PlaceholderMenuNode,
|
||||
} from '../../../browser/menu/arduino-menus';
|
||||
import electron = require('@theia/core/shared/electron');
|
||||
|
||||
@injectable()
|
||||
export class ElectronMainMenuFactory extends TheiaElectronMainMenuFactory {
|
||||
createMenuBar(): Electron.Menu {
|
||||
createElectronMenuBar(): Electron.Menu {
|
||||
this._toggledCommands.clear(); // https://github.com/eclipse-theia/theia/issues/8977
|
||||
const menuModel = this.menuProvider.getMenu(MAIN_MENU_BAR);
|
||||
const template = this.fillMenuTemplate([], menuModel);
|
||||
@ -30,7 +31,17 @@ export class ElectronMainMenuFactory extends TheiaElectronMainMenuFactory {
|
||||
return menu;
|
||||
}
|
||||
|
||||
createContextMenu(menuPath: MenuPath, args?: any[]): Electron.Menu {
|
||||
async setMenuBar(): Promise<void> {
|
||||
await this.preferencesService.ready;
|
||||
const createdMenuBar = this.createElectronMenuBar();
|
||||
if (isOSX) {
|
||||
electron.remote.Menu.setApplicationMenu(createdMenuBar);
|
||||
} else {
|
||||
electron.remote.getCurrentWindow().setMenu(createdMenuBar);
|
||||
}
|
||||
}
|
||||
|
||||
createElectronContextMenu(menuPath: MenuPath, args?: any[]): Electron.Menu {
|
||||
const menuModel = this.menuProvider.getMenu(menuPath);
|
||||
const template = this.fillMenuTemplate([], menuModel, args, {
|
||||
showDisabled: false,
|
||||
@ -99,7 +110,7 @@ export class ElectronMainMenuFactory extends TheiaElectronMainMenuFactory {
|
||||
return { label, submenu };
|
||||
}
|
||||
|
||||
protected handleDefault(
|
||||
protected handleElectronDefault(
|
||||
menuNode: CompositeMenuNode,
|
||||
args: any[] = [],
|
||||
options?: ElectronMenuOptions
|
||||
|
@ -17,6 +17,7 @@ import {
|
||||
TheiaBrowserWindowOptions,
|
||||
} from '@theia/core/lib/electron-main/electron-main-application';
|
||||
import { SplashServiceImpl } from '../splash/splash-service-impl';
|
||||
import { ipcMain } from '@theia/core/shared/electron';
|
||||
|
||||
app.commandLine.appendSwitch('disable-http-cache');
|
||||
|
||||
@ -35,6 +36,20 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
|
||||
return super.start(config);
|
||||
}
|
||||
|
||||
protected getTitleBarStyle(): 'native' | 'custom' {
|
||||
return 'native';
|
||||
}
|
||||
|
||||
protected hookApplicationEvents(): void {
|
||||
app.on('will-quit', this.onWillQuit.bind(this));
|
||||
app.on('second-instance', this.onSecondInstance.bind(this));
|
||||
app.on('window-all-closed', this.onWindowAllClosed.bind(this));
|
||||
|
||||
ipcMain.on('restart', ({ sender }) => {
|
||||
this.restart(sender.id);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this rather than creating `BrowserWindow` instances from scratch, since some security parameters need to be set, this method will do it.
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { NewWindowOptions } from '@theia/core/lib/browser/window/window-service';
|
||||
import { ElectronMainWindowServiceImpl as TheiaElectronMainWindowService } from '@theia/core/lib/electron-main/electron-main-window-service-impl';
|
||||
import { ElectronMainApplication } from './electron-main-application';
|
||||
import { NewWindowOptions } from '@theia/core/lib/common/window';
|
||||
|
||||
@injectable()
|
||||
export class ElectronMainWindowServiceImpl extends TheiaElectronMainWindowService {
|
||||
|
@ -12,6 +12,7 @@ import { Event, Emitter } from '@theia/core/lib/common/event';
|
||||
import { environment } from '@theia/application-package/lib/environment';
|
||||
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
||||
import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application';
|
||||
import { LocalizationProvider } from '@theia/core/lib/node/i18n/localization-provider';
|
||||
import { ArduinoDaemon, NotificationServiceServer } from '../common/protocol';
|
||||
import { DaemonLog } from './daemon-log';
|
||||
import { CLI_CONFIG } from './cli-config';
|
||||
@ -31,6 +32,9 @@ export class ArduinoDaemonImpl
|
||||
@inject(NotificationServiceServer)
|
||||
protected readonly notificationService: NotificationServiceServer;
|
||||
|
||||
@inject(LocalizationProvider)
|
||||
protected readonly localizationProvider: LocalizationProvider;
|
||||
|
||||
protected readonly toDispose = new DisposableCollection();
|
||||
protected readonly onDaemonStartedEmitter = new Emitter<void>();
|
||||
protected readonly onDaemonStoppedEmitter = new Emitter<void>();
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { RecursivePartial } from '@theia/core/lib/common/types';
|
||||
import { Daemon } from '../common/protocol/config-service';
|
||||
|
||||
export const CLI_CONFIG = 'arduino-cli.yaml';
|
||||
|
||||
@ -21,29 +22,6 @@ export namespace BoardManager {
|
||||
}
|
||||
}
|
||||
|
||||
export interface Daemon {
|
||||
readonly port: string | number;
|
||||
}
|
||||
export namespace Daemon {
|
||||
export function is(
|
||||
daemon: RecursivePartial<Daemon> | undefined
|
||||
): daemon is Daemon {
|
||||
return !!daemon && !!daemon.port;
|
||||
}
|
||||
export function sameAs(
|
||||
left: RecursivePartial<Daemon> | undefined,
|
||||
right: RecursivePartial<Daemon> | undefined
|
||||
): boolean {
|
||||
if (left === undefined) {
|
||||
return right === undefined;
|
||||
}
|
||||
if (right === undefined) {
|
||||
return left === undefined;
|
||||
}
|
||||
return String(left.port) === String(right.port);
|
||||
}
|
||||
}
|
||||
|
||||
export interface Directories {
|
||||
readonly data: string;
|
||||
readonly downloads: string;
|
||||
@ -123,6 +101,7 @@ export interface Network {
|
||||
|
||||
// Arduino CLI config scheme
|
||||
export interface CliConfig {
|
||||
locale?: string;
|
||||
board_manager?: RecursivePartial<BoardManager>;
|
||||
directories?: RecursivePartial<Directories>;
|
||||
logging?: RecursivePartial<Logging>;
|
||||
|
@ -95,6 +95,7 @@ export class ConfigServiceImpl
|
||||
downloadsDirUri,
|
||||
sketchDirUri,
|
||||
network,
|
||||
locale,
|
||||
} = config;
|
||||
copyDefaultCliConfig.directories = {
|
||||
data: FileUri.fsPath(dataDirUri),
|
||||
@ -104,6 +105,7 @@ export class ConfigServiceImpl
|
||||
copyDefaultCliConfig.board_manager = {
|
||||
additional_urls: [...additionalUrls],
|
||||
};
|
||||
copyDefaultCliConfig.locale = locale || 'en';
|
||||
const proxy = Network.stringify(network);
|
||||
copyDefaultCliConfig.network = { proxy };
|
||||
const { port } = copyDefaultCliConfig.daemon;
|
||||
@ -214,7 +216,7 @@ export class ConfigServiceImpl
|
||||
protected async mapCliConfigToAppConfig(
|
||||
cliConfig: DefaultCliConfig
|
||||
): Promise<Config> {
|
||||
const { directories } = cliConfig;
|
||||
const { directories, locale = 'en', daemon } = cliConfig;
|
||||
const { data, user, downloads } = directories;
|
||||
const additionalUrls: Array<string> = [];
|
||||
if (cliConfig.board_manager && cliConfig.board_manager.additional_urls) {
|
||||
@ -229,6 +231,8 @@ export class ConfigServiceImpl
|
||||
downloadsDirUri: FileUri.create(downloads).toString(),
|
||||
additionalUrls,
|
||||
network,
|
||||
locale,
|
||||
daemon,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,214 +1,247 @@
|
||||
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
||||
const disableJSDOM = enableJSDOM();
|
||||
// import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
||||
// const disableJSDOM = enableJSDOM();
|
||||
|
||||
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
||||
import { ApplicationProps } from '@theia/application-package/lib/application-props';
|
||||
FrontendApplicationConfigProvider.set({
|
||||
...ApplicationProps.DEFAULT.frontend.config,
|
||||
});
|
||||
// import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
||||
// import { ApplicationProps } from '@theia/application-package/lib/application-props';
|
||||
// FrontendApplicationConfigProvider.set({
|
||||
// ...ApplicationProps.DEFAULT.frontend.config,
|
||||
// });
|
||||
|
||||
import { MessageService } from '@theia/core';
|
||||
import { BoardsServiceProvider } from '../../browser/boards/boards-service-provider';
|
||||
import { BoardsListWidgetFrontendContribution } from '../../browser/boards/boards-widget-frontend-contribution';
|
||||
import {
|
||||
BoardsPackage,
|
||||
BoardsService,
|
||||
ResponseServiceArduino,
|
||||
} from '../../common/protocol';
|
||||
import { IMock, It, Mock, Times } from 'typemoq';
|
||||
import { Container, ContainerModule } from 'inversify';
|
||||
import { BoardsAutoInstaller } from '../../browser/boards/boards-auto-installer';
|
||||
import { tick } from '../utils';
|
||||
import { ListWidget } from '../../browser/widgets/component-list/list-widget';
|
||||
import { aBoardConfig, anInstalledPackage, aPackage } from './fixtures/boards';
|
||||
// import { MessageService } from '@theia/core';
|
||||
// import { BoardsServiceProvider } from '../../browser/boards/boards-service-provider';
|
||||
// import { BoardsListWidgetFrontendContribution } from '../../browser/boards/boards-widget-frontend-contribution';
|
||||
// import {
|
||||
// Board,
|
||||
// BoardsPackage,
|
||||
// BoardsService,
|
||||
// Port,
|
||||
// ResponseServiceArduino,
|
||||
// } from '../../common/protocol';
|
||||
// import { IMock, It, Mock, Times } from 'typemoq';
|
||||
// import { Container, ContainerModule } from 'inversify';
|
||||
// import { BoardsAutoInstaller } from '../../browser/boards/boards-auto-installer';
|
||||
// import { BoardsConfig } from '../../browser/boards/boards-config';
|
||||
// import { tick } from '../utils';
|
||||
// import { ListWidget } from '../../browser/widgets/component-list/list-widget';
|
||||
|
||||
disableJSDOM();
|
||||
// disableJSDOM();
|
||||
|
||||
describe('BoardsAutoInstaller', () => {
|
||||
let subject: BoardsAutoInstaller;
|
||||
let messageService: IMock<MessageService>;
|
||||
let boardsService: IMock<BoardsService>;
|
||||
let boardsServiceClient: IMock<BoardsServiceProvider>;
|
||||
let responseService: IMock<ResponseServiceArduino>;
|
||||
let boardsManagerFrontendContribution: IMock<BoardsListWidgetFrontendContribution>;
|
||||
let boardsManagerWidget: IMock<ListWidget<BoardsPackage>>;
|
||||
// const aBoard: Board = {
|
||||
// fqbn: 'some:board:fqbn',
|
||||
// name: 'Some Arduino Board',
|
||||
// port: { address: '/lol/port1234', protocol: 'serial' },
|
||||
// };
|
||||
// const aPort: Port = {
|
||||
// address: aBoard.port!.address,
|
||||
// protocol: aBoard.port!.protocol,
|
||||
// };
|
||||
// const aBoardConfig: BoardsConfig.Config = {
|
||||
// selectedBoard: aBoard,
|
||||
// selectedPort: aPort,
|
||||
// };
|
||||
// const aPackage: BoardsPackage = {
|
||||
// author: 'someAuthor',
|
||||
// availableVersions: ['some.ver.sion', 'some.other.version'],
|
||||
// boards: [aBoard],
|
||||
// deprecated: false,
|
||||
// description: 'Some Arduino Board, Some Other Arduino Board',
|
||||
// id: 'some:arduinoCoreId',
|
||||
// installable: true,
|
||||
// moreInfoLink: 'http://www.some-url.lol/',
|
||||
// name: 'Some Arduino Package',
|
||||
// summary: 'Boards included in this package:',
|
||||
// };
|
||||
|
||||
let testContainer: Container;
|
||||
// const anInstalledPackage: BoardsPackage = {
|
||||
// ...aPackage,
|
||||
// installedVersion: 'some.ver.sion',
|
||||
// };
|
||||
|
||||
beforeEach(() => {
|
||||
testContainer = new Container();
|
||||
messageService = Mock.ofType<MessageService>();
|
||||
boardsService = Mock.ofType<BoardsService>();
|
||||
boardsServiceClient = Mock.ofType<BoardsServiceProvider>();
|
||||
responseService = Mock.ofType<ResponseServiceArduino>();
|
||||
boardsManagerFrontendContribution =
|
||||
Mock.ofType<BoardsListWidgetFrontendContribution>();
|
||||
boardsManagerWidget = Mock.ofType<ListWidget<BoardsPackage>>();
|
||||
// describe('BoardsAutoInstaller', () => {
|
||||
// let subject: BoardsAutoInstaller;
|
||||
// let messageService: IMock<MessageService>;
|
||||
// let boardsService: IMock<BoardsService>;
|
||||
// let boardsServiceClient: IMock<BoardsServiceProvider>;
|
||||
// let responseService: IMock<ResponseServiceArduino>;
|
||||
// let boardsManagerFrontendContribution: IMock<BoardsListWidgetFrontendContribution>;
|
||||
// let boardsManagerWidget: IMock<ListWidget<BoardsPackage>>;
|
||||
|
||||
boardsManagerWidget.setup((b) =>
|
||||
b.refresh(aPackage.name.toLocaleLowerCase())
|
||||
);
|
||||
// let testContainer: Container;
|
||||
|
||||
boardsManagerFrontendContribution
|
||||
.setup((b) => b.openView({ reveal: true }))
|
||||
.returns(async () => boardsManagerWidget.object);
|
||||
// beforeEach(() => {
|
||||
// testContainer = new Container();
|
||||
// messageService = Mock.ofType<MessageService>();
|
||||
// boardsService = Mock.ofType<BoardsService>();
|
||||
// boardsServiceClient = Mock.ofType<BoardsServiceProvider>();
|
||||
// responseService = Mock.ofType<ResponseServiceArduino>();
|
||||
// boardsManagerFrontendContribution =
|
||||
// Mock.ofType<BoardsListWidgetFrontendContribution>();
|
||||
// boardsManagerWidget = Mock.ofType<ListWidget<BoardsPackage>>();
|
||||
|
||||
messageService
|
||||
.setup((m) => m.showProgress(It.isAny(), It.isAny()))
|
||||
.returns(async () => ({
|
||||
cancel: () => null,
|
||||
id: '',
|
||||
report: () => null,
|
||||
result: Promise.resolve(''),
|
||||
}));
|
||||
// boardsManagerWidget.setup((b) =>
|
||||
// b.refresh(aPackage.name.toLocaleLowerCase())
|
||||
// );
|
||||
|
||||
responseService
|
||||
.setup((r) => r.onProgressDidChange(It.isAny()))
|
||||
.returns(() => ({ dispose: () => null }));
|
||||
// boardsManagerFrontendContribution
|
||||
// .setup((b) => b.openView({ reveal: true }))
|
||||
// .returns(async () => boardsManagerWidget.object);
|
||||
|
||||
const module = new ContainerModule((bind) => {
|
||||
bind(BoardsAutoInstaller).toSelf();
|
||||
bind(MessageService).toConstantValue(messageService.object);
|
||||
bind(BoardsService).toConstantValue(boardsService.object);
|
||||
bind(BoardsServiceProvider).toConstantValue(boardsServiceClient.object);
|
||||
bind(ResponseServiceArduino).toConstantValue(responseService.object);
|
||||
bind(BoardsListWidgetFrontendContribution).toConstantValue(
|
||||
boardsManagerFrontendContribution.object
|
||||
);
|
||||
});
|
||||
// messageService
|
||||
// .setup((m) => m.showProgress(It.isAny(), It.isAny()))
|
||||
// .returns(async () => ({
|
||||
// cancel: () => null,
|
||||
// id: '',
|
||||
// report: () => null,
|
||||
// result: Promise.resolve(''),
|
||||
// }));
|
||||
|
||||
testContainer.load(module);
|
||||
subject = testContainer.get(BoardsAutoInstaller);
|
||||
});
|
||||
// responseService
|
||||
// .setup((r) => r.onProgressDidChange(It.isAny()))
|
||||
// .returns(() => ({ dispose: () => null }));
|
||||
|
||||
context('when it starts', () => {
|
||||
it('should register to the BoardsServiceClient in order to check the packages every a new board is plugged in', () => {
|
||||
subject.onStart();
|
||||
boardsServiceClient.verify(
|
||||
(b) => b.onBoardsConfigChanged(It.isAny()),
|
||||
Times.once()
|
||||
);
|
||||
});
|
||||
// const module = new ContainerModule((bind) => {
|
||||
// bind(BoardsAutoInstaller).toSelf();
|
||||
// bind(MessageService).toConstantValue(messageService.object);
|
||||
// bind(BoardsService).toConstantValue(boardsService.object);
|
||||
// bind(BoardsServiceProvider).toConstantValue(boardsServiceClient.object);
|
||||
// bind(ResponseServiceArduino).toConstantValue(responseService.object);
|
||||
// bind(BoardsListWidgetFrontendContribution).toConstantValue(
|
||||
// boardsManagerFrontendContribution.object
|
||||
// );
|
||||
// });
|
||||
|
||||
context('and it checks the installable packages', () => {
|
||||
context(`and a port and a board a selected`, () => {
|
||||
beforeEach(() => {
|
||||
boardsServiceClient
|
||||
.setup((b) => b.boardsConfig)
|
||||
.returns(() => aBoardConfig);
|
||||
});
|
||||
context('if no package for the board is already installed', () => {
|
||||
context('if a candidate package for the board is found', () => {
|
||||
beforeEach(() => {
|
||||
boardsService
|
||||
.setup((b) => b.search(It.isValue({})))
|
||||
.returns(async () => [aPackage]);
|
||||
});
|
||||
it('should show a notification suggesting to install that package', async () => {
|
||||
messageService
|
||||
.setup((m) =>
|
||||
m.info(It.isAnyString(), It.isAnyString(), It.isAnyString())
|
||||
)
|
||||
.returns(() => Promise.resolve('Install Manually'));
|
||||
subject.onStart();
|
||||
await tick();
|
||||
messageService.verify(
|
||||
(m) =>
|
||||
m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
Times.once()
|
||||
);
|
||||
});
|
||||
context(`if the answer to the message is 'Yes'`, () => {
|
||||
beforeEach(() => {
|
||||
messageService
|
||||
.setup((m) =>
|
||||
m.info(It.isAnyString(), It.isAnyString(), It.isAnyString())
|
||||
)
|
||||
.returns(() => Promise.resolve('Yes'));
|
||||
});
|
||||
it('should install the package', async () => {
|
||||
subject.onStart();
|
||||
// testContainer.load(module);
|
||||
// subject = testContainer.get(BoardsAutoInstaller);
|
||||
// });
|
||||
|
||||
await tick();
|
||||
// context('when it starts', () => {
|
||||
// it('should register to the BoardsServiceClient in order to check the packages every a new board is plugged in', () => {
|
||||
// subject.onStart();
|
||||
// boardsServiceClient.verify(
|
||||
// (b) => b.onBoardsConfigChanged(It.isAny()),
|
||||
// Times.once()
|
||||
// );
|
||||
// });
|
||||
|
||||
messageService.verify(
|
||||
(m) => m.showProgress(It.isAny(), It.isAny()),
|
||||
Times.once()
|
||||
);
|
||||
});
|
||||
});
|
||||
context(
|
||||
`if the answer to the message is 'Install Manually'`,
|
||||
() => {
|
||||
beforeEach(() => {
|
||||
messageService
|
||||
.setup((m) =>
|
||||
m.info(
|
||||
It.isAnyString(),
|
||||
It.isAnyString(),
|
||||
It.isAnyString()
|
||||
)
|
||||
)
|
||||
.returns(() => Promise.resolve('Install Manually'));
|
||||
});
|
||||
it('should open the boards manager widget', () => {
|
||||
subject.onStart();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
context('if a candidate package for the board is not found', () => {
|
||||
beforeEach(() => {
|
||||
boardsService
|
||||
.setup((b) => b.search(It.isValue({})))
|
||||
.returns(async () => []);
|
||||
});
|
||||
it('should do nothing', async () => {
|
||||
subject.onStart();
|
||||
await tick();
|
||||
messageService.verify(
|
||||
(m) =>
|
||||
m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
Times.never()
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
context(
|
||||
'if one of the packages for the board is already installed',
|
||||
() => {
|
||||
beforeEach(() => {
|
||||
boardsService
|
||||
.setup((b) => b.search(It.isValue({})))
|
||||
.returns(async () => [aPackage, anInstalledPackage]);
|
||||
messageService
|
||||
.setup((m) =>
|
||||
m.info(It.isAnyString(), It.isAnyString(), It.isAnyString())
|
||||
)
|
||||
.returns(() => Promise.resolve('Yes'));
|
||||
});
|
||||
it('should do nothing', async () => {
|
||||
subject.onStart();
|
||||
await tick();
|
||||
messageService.verify(
|
||||
(m) =>
|
||||
m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
Times.never()
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
context('and there is no selected board or port', () => {
|
||||
it('should do nothing', async () => {
|
||||
subject.onStart();
|
||||
await tick();
|
||||
messageService.verify(
|
||||
(m) => m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
Times.never()
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
// context('and it checks the installable packages', () => {
|
||||
// context(`and a port and a board a selected`, () => {
|
||||
// beforeEach(() => {
|
||||
// boardsServiceClient
|
||||
// .setup((b) => b.boardsConfig)
|
||||
// .returns(() => aBoardConfig);
|
||||
// });
|
||||
// context('if no package for the board is already installed', () => {
|
||||
// context('if a candidate package for the board is found', () => {
|
||||
// beforeEach(() => {
|
||||
// boardsService
|
||||
// .setup((b) => b.search(It.isValue({})))
|
||||
// .returns(async () => [aPackage]);
|
||||
// });
|
||||
// it('should show a notification suggesting to install that package', async () => {
|
||||
// messageService
|
||||
// .setup((m) =>
|
||||
// m.info(It.isAnyString(), It.isAnyString(), It.isAnyString())
|
||||
// )
|
||||
// .returns(() => Promise.resolve('Install Manually'));
|
||||
// subject.onStart();
|
||||
// await tick();
|
||||
// messageService.verify(
|
||||
// (m) =>
|
||||
// m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
// Times.once()
|
||||
// );
|
||||
// });
|
||||
// context(`if the answer to the message is 'Yes'`, () => {
|
||||
// beforeEach(() => {
|
||||
// messageService
|
||||
// .setup((m) =>
|
||||
// m.info(It.isAnyString(), It.isAnyString(), It.isAnyString())
|
||||
// )
|
||||
// .returns(() => Promise.resolve('Yes'));
|
||||
// });
|
||||
// it('should install the package', async () => {
|
||||
// subject.onStart();
|
||||
|
||||
// await tick();
|
||||
|
||||
// messageService.verify(
|
||||
// (m) => m.showProgress(It.isAny(), It.isAny()),
|
||||
// Times.once()
|
||||
// );
|
||||
// });
|
||||
// });
|
||||
// context(
|
||||
// `if the answer to the message is 'Install Manually'`,
|
||||
// () => {
|
||||
// beforeEach(() => {
|
||||
// messageService
|
||||
// .setup((m) =>
|
||||
// m.info(
|
||||
// It.isAnyString(),
|
||||
// It.isAnyString(),
|
||||
// It.isAnyString()
|
||||
// )
|
||||
// )
|
||||
// .returns(() => Promise.resolve('Install Manually'));
|
||||
// });
|
||||
// it('should open the boards manager widget', () => {
|
||||
// subject.onStart();
|
||||
// });
|
||||
// }
|
||||
// );
|
||||
// });
|
||||
// context('if a candidate package for the board is not found', () => {
|
||||
// beforeEach(() => {
|
||||
// boardsService
|
||||
// .setup((b) => b.search(It.isValue({})))
|
||||
// .returns(async () => []);
|
||||
// });
|
||||
// it('should do nothing', async () => {
|
||||
// subject.onStart();
|
||||
// await tick();
|
||||
// messageService.verify(
|
||||
// (m) =>
|
||||
// m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
// Times.never()
|
||||
// );
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// context(
|
||||
// 'if one of the packages for the board is already installed',
|
||||
// () => {
|
||||
// beforeEach(() => {
|
||||
// boardsService
|
||||
// .setup((b) => b.search(It.isValue({})))
|
||||
// .returns(async () => [aPackage, anInstalledPackage]);
|
||||
// messageService
|
||||
// .setup((m) =>
|
||||
// m.info(It.isAnyString(), It.isAnyString(), It.isAnyString())
|
||||
// )
|
||||
// .returns(() => Promise.resolve('Yes'));
|
||||
// });
|
||||
// it('should do nothing', async () => {
|
||||
// subject.onStart();
|
||||
// await tick();
|
||||
// messageService.verify(
|
||||
// (m) =>
|
||||
// m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
// Times.never()
|
||||
// );
|
||||
// });
|
||||
// }
|
||||
// );
|
||||
// });
|
||||
// context('and there is no selected board or port', () => {
|
||||
// it('should do nothing', async () => {
|
||||
// subject.onStart();
|
||||
// await tick();
|
||||
// messageService.verify(
|
||||
// (m) => m.info(It.isAnyString(), It.isAnyString(), It.isAnyString()),
|
||||
// Times.never()
|
||||
// );
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
|
@ -4,26 +4,26 @@
|
||||
"version": "2.0.0-beta.12",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@theia/core": "1.18.0",
|
||||
"@theia/debug": "1.18.0",
|
||||
"@theia/editor": "1.18.0",
|
||||
"@theia/editor-preview": "1.18.0",
|
||||
"@theia/file-search": "1.18.0",
|
||||
"@theia/filesystem": "1.18.0",
|
||||
"@theia/keymaps": "1.18.0",
|
||||
"@theia/messages": "1.18.0",
|
||||
"@theia/monaco": "1.18.0",
|
||||
"@theia/navigator": "1.18.0",
|
||||
"@theia/plugin-ext": "1.18.0",
|
||||
"@theia/plugin-ext-vscode": "1.18.0",
|
||||
"@theia/preferences": "1.18.0",
|
||||
"@theia/process": "1.18.0",
|
||||
"@theia/terminal": "1.18.0",
|
||||
"@theia/workspace": "1.18.0",
|
||||
"@theia/core": "1.19.0",
|
||||
"@theia/debug": "1.19.0",
|
||||
"@theia/editor": "1.19.0",
|
||||
"@theia/editor-preview": "1.19.0",
|
||||
"@theia/file-search": "1.19.0",
|
||||
"@theia/filesystem": "1.19.0",
|
||||
"@theia/keymaps": "1.19.0",
|
||||
"@theia/messages": "1.19.0",
|
||||
"@theia/monaco": "1.19.0",
|
||||
"@theia/navigator": "1.19.0",
|
||||
"@theia/plugin-ext": "1.19.0",
|
||||
"@theia/plugin-ext-vscode": "1.19.0",
|
||||
"@theia/preferences": "1.19.0",
|
||||
"@theia/process": "1.19.0",
|
||||
"@theia/terminal": "1.19.0",
|
||||
"@theia/workspace": "1.19.0",
|
||||
"arduino-ide-extension": "2.0.0-beta.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "1.17.2"
|
||||
"@theia/cli": "1.19.0"
|
||||
},
|
||||
"scripts": {
|
||||
"prepare": "theia build --mode development",
|
||||
|
@ -5,27 +5,27 @@
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"main": "src-gen/frontend/electron-main.js",
|
||||
"dependencies": {
|
||||
"@theia/core": "1.18.0",
|
||||
"@theia/debug": "1.18.0",
|
||||
"@theia/editor": "1.18.0",
|
||||
"@theia/editor-preview": "1.18.0",
|
||||
"@theia/electron": "1.18.0",
|
||||
"@theia/file-search": "1.18.0",
|
||||
"@theia/filesystem": "1.18.0",
|
||||
"@theia/keymaps": "1.18.0",
|
||||
"@theia/messages": "1.18.0",
|
||||
"@theia/monaco": "1.18.0",
|
||||
"@theia/navigator": "1.18.0",
|
||||
"@theia/plugin-ext": "1.18.0",
|
||||
"@theia/plugin-ext-vscode": "1.18.0",
|
||||
"@theia/preferences": "1.18.0",
|
||||
"@theia/process": "1.18.0",
|
||||
"@theia/terminal": "1.18.0",
|
||||
"@theia/workspace": "1.18.0",
|
||||
"@theia/core": "1.19.0",
|
||||
"@theia/debug": "1.19.0",
|
||||
"@theia/editor": "1.19.0",
|
||||
"@theia/editor-preview": "1.19.0",
|
||||
"@theia/electron": "1.19.0",
|
||||
"@theia/file-search": "1.19.0",
|
||||
"@theia/filesystem": "1.19.0",
|
||||
"@theia/keymaps": "1.19.0",
|
||||
"@theia/messages": "1.19.0",
|
||||
"@theia/monaco": "1.19.0",
|
||||
"@theia/navigator": "1.19.0",
|
||||
"@theia/plugin-ext": "1.19.0",
|
||||
"@theia/plugin-ext-vscode": "1.19.0",
|
||||
"@theia/preferences": "1.19.0",
|
||||
"@theia/process": "1.19.0",
|
||||
"@theia/terminal": "1.19.0",
|
||||
"@theia/workspace": "1.19.0",
|
||||
"arduino-ide-extension": "2.0.0-beta.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "1.17.2"
|
||||
"@theia/cli": "1.19.0"
|
||||
},
|
||||
"scripts": {
|
||||
"prepare": "theia build --mode development",
|
||||
|
@ -9,7 +9,7 @@
|
||||
"node-log-rotate": "^0.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "1.17.2",
|
||||
"@theia/cli": "1.19.0",
|
||||
"cross-env": "^7.0.2",
|
||||
"electron-builder": "22.7.0",
|
||||
"electron-notarize": "^0.3.0",
|
||||
@ -139,7 +139,7 @@
|
||||
"theiaPluginsDir": "plugins",
|
||||
"theiaPlugins": {
|
||||
"vscode-builtin-cpp": "https://open-vsx.org/api/vscode/cpp/1.52.1/file/vscode.cpp-1.52.1.vsix",
|
||||
"vscode-arduino-tools": "https://downloads.arduino.cc/vscode-arduino-tools/nightly/vscode-arduino-tools-0.0.1-beta.1.vsix",
|
||||
"vscode-arduino-tools": "https://downloads.arduino.cc/vscode-arduino-tools/vscode-arduino-tools-0.0.2-beta.1.vsix",
|
||||
"vscode-builtin-json": "https://open-vsx.org/api/vscode/json/1.46.1/file/vscode.json-1.46.1.vsix",
|
||||
"vscode-builtin-json-language-features": "https://open-vsx.org/api/vscode/json-language-features/1.46.1/file/vscode.json-language-features-1.46.1.vsix",
|
||||
"cortex-debug": "https://open-vsx.org/api/marus25/cortex-debug/0.3.10/file/marus25.cortex-debug-0.3.10.vsix"
|
||||
|
@ -43,9 +43,6 @@
|
||||
"auth.domain": "The OAuth2 domain.",
|
||||
"auth.audience": "The OAuth2 audience.",
|
||||
"auth.registerUri": "The URI used to register a new user.",
|
||||
"invalid.sketchbook.location": "Invalid sketchbook location: {0}",
|
||||
"invalid.editorFontSize": "Invalid editor font size. It must be a positive integer.",
|
||||
"invalid.theme": "Invalid theme.",
|
||||
"network": "Network",
|
||||
"sketchbook.location": "Sketchbook location",
|
||||
"browse": "Browse",
|
||||
@ -60,14 +57,16 @@
|
||||
"verifyAfterUpload": "Verify code after upload",
|
||||
"checkForUpdates": "Check for updates on startup",
|
||||
"editorQuickSuggestions": "Editor Quick Suggestions",
|
||||
"languageServerLogging": "Enable language server logging",
|
||||
"additionalManagerURLs": "Additional Boards Manager URLs",
|
||||
"noProxy": "No proxy",
|
||||
"manualProxy": "Manual proxy configuration",
|
||||
"newSketchbookLocation": "Select new sketchbook location",
|
||||
"choose": "Choose",
|
||||
"enterAdditionalURLs": "Enter additional URLs, one for each row",
|
||||
"unofficialBoardSupport": "Click for a list of unofficial board support URLs"
|
||||
"unofficialBoardSupport": "Click for a list of unofficial board support URLs",
|
||||
"invalid.sketchbook.location": "Invalid sketchbook location: {0}",
|
||||
"invalid.editorFontSize": "Invalid editor font size. It must be a positive integer.",
|
||||
"invalid.theme": "Invalid theme."
|
||||
},
|
||||
"cloud": {
|
||||
"signIn": "SIGN IN",
|
||||
|
@ -66,7 +66,7 @@
|
||||
"theiaPluginsDir": "plugins",
|
||||
"theiaPlugins": {
|
||||
"vscode-builtin-cpp": "https://open-vsx.org/api/vscode/cpp/1.52.1/file/vscode.cpp-1.52.1.vsix",
|
||||
"vscode-arduino-tools": "https://downloads.arduino.cc/vscode-arduino-tools/nightly/vscode-arduino-tools-0.0.1-beta.1.vsix",
|
||||
"vscode-arduino-tools": "https://downloads.arduino.cc/vscode-arduino-tools/vscode-arduino-tools-0.0.2-beta.1.vsix",
|
||||
"vscode-builtin-json": "https://open-vsx.org/api/vscode/json/1.46.1/file/vscode.json-1.46.1.vsix",
|
||||
"vscode-builtin-json-language-features": "https://open-vsx.org/api/vscode/json-language-features/1.46.1/file/vscode.json-language-features-1.46.1.vsix",
|
||||
"cortex-debug": "https://open-vsx.org/api/marus25/cortex-debug/0.3.10/file/marus25.cortex-debug-0.3.10.vsix"
|
||||
|
684
yarn.lock
684
yarn.lock
@ -2104,38 +2104,6 @@
|
||||
dependencies:
|
||||
defer-to-connect "^1.0.1"
|
||||
|
||||
"@theia/application-manager@1.17.2":
|
||||
version "1.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@theia/application-manager/-/application-manager-1.17.2.tgz#bcf5b23754705848a81d8a97f9e40ee141a6efc7"
|
||||
integrity sha512-Ev/Rq3Da8pg22YzMPOJ/97rMmovHuvCDT9CLCNba5f9jgkBwX4WgS32q21qfucZ/OX3Y0V0EFSFilVyV7luzKA==
|
||||
dependencies:
|
||||
"@babel/core" "^7.10.0"
|
||||
"@babel/plugin-transform-classes" "^7.10.0"
|
||||
"@babel/plugin-transform-runtime" "^7.10.0"
|
||||
"@babel/preset-env" "^7.10.0"
|
||||
"@theia/application-package" "1.17.2"
|
||||
"@theia/compression-webpack-plugin" "^3.0.0"
|
||||
"@types/fs-extra" "^4.0.2"
|
||||
babel-loader "^8.2.2"
|
||||
buffer "^6.0.3"
|
||||
circular-dependency-plugin "^5.2.2"
|
||||
copy-webpack-plugin "^8.1.1"
|
||||
css-loader "^6.2.0"
|
||||
electron-rebuild "^1.8.6"
|
||||
font-awesome-webpack "0.0.5-beta.2"
|
||||
fs-extra "^4.0.2"
|
||||
ignore-loader "^0.1.2"
|
||||
less "^3.0.3"
|
||||
setimmediate "^1.0.5"
|
||||
source-map-loader "^2.0.1"
|
||||
source-map-support "^0.5.19"
|
||||
style-loader "^2.0.0"
|
||||
umd-compat-loader "^2.1.2"
|
||||
webpack "^5.48.0"
|
||||
webpack-cli "4.7.0"
|
||||
worker-loader "^3.0.8"
|
||||
yargs "^15.3.1"
|
||||
|
||||
"@theia/application-manager@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/application-manager/-/application-manager-1.19.0.tgz#e608e55e1bc5252b185e6f8917ea274de2a8dc7a"
|
||||
@ -2168,40 +2136,6 @@
|
||||
worker-loader "^3.0.8"
|
||||
yargs "^15.3.1"
|
||||
|
||||
"@theia/application-package@1.17.2":
|
||||
version "1.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@theia/application-package/-/application-package-1.17.2.tgz#05b1f2c749bbd693013f17cdf8b57d5789cb70fb"
|
||||
integrity sha512-IKeH+ow5h8tuW9dVV27I551EowcvKe5mBx/U14oKJ7krKZ0eLUqJPGJukNIlRLbhz/9ANJvsGXHw02qMhP7CXQ==
|
||||
dependencies:
|
||||
"@types/fs-extra" "^4.0.2"
|
||||
"@types/request" "^2.0.3"
|
||||
"@types/semver" "^5.4.0"
|
||||
"@types/write-json-file" "^2.2.1"
|
||||
changes-stream "^2.2.0"
|
||||
deepmerge "^4.2.2"
|
||||
fs-extra "^4.0.2"
|
||||
is-electron "^2.1.0"
|
||||
request "^2.82.0"
|
||||
semver "^5.4.1"
|
||||
write-json-file "^2.2.0"
|
||||
|
||||
"@theia/application-package@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/application-package/-/application-package-1.18.0.tgz#20bb0dd21c52bf58a79c99c73517558e1704bc2c"
|
||||
integrity sha512-v8jzr3ItlzyeserrEGfy3MJRB1rH2ewKWfLSu26PGRsR38zip1ZGLsPmk10/v8NVYwPu5enD8tppWlikRWwFzA==
|
||||
dependencies:
|
||||
"@types/fs-extra" "^4.0.2"
|
||||
"@types/request" "^2.0.3"
|
||||
"@types/semver" "^5.4.0"
|
||||
"@types/write-json-file" "^2.2.1"
|
||||
changes-stream "^2.2.0"
|
||||
deepmerge "^4.2.2"
|
||||
fs-extra "^4.0.2"
|
||||
is-electron "^2.1.0"
|
||||
request "^2.82.0"
|
||||
semver "^5.4.1"
|
||||
write-json-file "^2.2.0"
|
||||
|
||||
"@theia/application-package@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/application-package/-/application-package-1.19.0.tgz#a6045bec3ebcc7acb80dbfbb644c7fd429799aeb"
|
||||
@ -2219,54 +2153,27 @@
|
||||
semver "^5.4.1"
|
||||
write-json-file "^2.2.0"
|
||||
|
||||
"@theia/bulk-edit@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/bulk-edit/-/bulk-edit-1.18.0.tgz#bf24abd1fb25085e0c763beacfb13c2f084641dd"
|
||||
integrity sha512-AhuMHZYCM5ShUzaUVqP7a6e2q1iT40Tphl4FsfRA4YYavoz4h2z8vBLCVMhzMIBSt60cu3e3La61gEdrolwqcA==
|
||||
"@theia/bulk-edit@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/bulk-edit/-/bulk-edit-1.19.0.tgz#f822e8db865d745eca027ada0e98739250bf88de"
|
||||
integrity sha512-acwWHfIYccMy8KAVXV1Pmrk+CJCzdJ878iqJy9W3f+lH8UY8IKpAvxobRIiMVywCS+cxiPE+IlJtH4I2Qhm1rg==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
|
||||
"@theia/callhierarchy@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/callhierarchy/-/callhierarchy-1.18.0.tgz#af376982156265e81634c358414b058a09114680"
|
||||
integrity sha512-Ym1Ws/XF0UbPhDzENQHOv1LXbuMMOevkM14mONGIdHMPT6b0V+plDUjhbtdiheR0vh4JgfZNwgmnoZAej97g5w==
|
||||
"@theia/callhierarchy@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/callhierarchy/-/callhierarchy-1.19.0.tgz#24f7bd8b3abdb55ff5c120b7200235b099b96c11"
|
||||
integrity sha512-xRjTWobnx/RThneL1E7wx+mvAfjroFaofdpDpgaP8f1+CtkeDMtPKK0Q5eCzkXPt7b4nM3R8xTboxOQ0VJWYQA==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
ts-md5 "^1.2.2"
|
||||
|
||||
"@theia/cli@1.17.2":
|
||||
version "1.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@theia/cli/-/cli-1.17.2.tgz#5558de75d59a1db3be60a54b871cb7e6fc2a9c8e"
|
||||
integrity sha512-5Mwm8WO7smDle3R25i+OEEAT7EP/0Vgv0C6eH5GGS66eBcJEArKF7IxwhDf+qVJt3L/Qj7rePMoD9dVahiESbQ==
|
||||
dependencies:
|
||||
"@theia/application-manager" "1.17.2"
|
||||
"@theia/application-package" "1.17.2"
|
||||
"@theia/ovsx-client" "1.17.2"
|
||||
"@types/chai" "^4.2.7"
|
||||
"@types/mkdirp" "^0.5.2"
|
||||
"@types/mocha" "^5.2.7"
|
||||
"@types/node-fetch" "^2.5.7"
|
||||
"@types/puppeteer" "^2.0.0"
|
||||
"@types/requestretry" "^1.12.3"
|
||||
"@types/tar" "^4.0.3"
|
||||
chai "^4.2.0"
|
||||
colors "^1.4.0"
|
||||
decompress "^4.2.1"
|
||||
https-proxy-agent "^5.0.0"
|
||||
mocha "^7.0.0"
|
||||
node-fetch "^2.6.0"
|
||||
proxy-from-env "^1.1.0"
|
||||
puppeteer "^2.0.0"
|
||||
puppeteer-to-istanbul "^1.2.2"
|
||||
temp "^0.9.1"
|
||||
yargs "^15.3.1"
|
||||
|
||||
"@theia/cli@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/cli/-/cli-1.19.0.tgz#d9316b5e294ad5e7c4f66fd6d44efd9419d60955"
|
||||
@ -2307,19 +2214,19 @@
|
||||
serialize-javascript "^1.4.0"
|
||||
webpack-sources "^1.0.1"
|
||||
|
||||
"@theia/console@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/console/-/console-1.18.0.tgz#eee88e6943f631d52baa8c928bb4c09d4aca96fd"
|
||||
integrity sha512-pFEBeMXvNg3+s8ADt8xhgYSNyNtBypnx/2Xs4wCWqiLGosP+6w73+NRjIRr91zNnmDcD6JNszojBdw50B8AX5w==
|
||||
"@theia/console@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/console/-/console-1.19.0.tgz#79a594b68cb525304cfd11a28d3654d61c2c89d3"
|
||||
integrity sha512-Ze/qqH/bekVEB0QLI10tBxQ4NGMwQvuUW7OYZTuIwMM7iUSY/krgMe+1WJlh9802hSNPNZiOhMtnvBqw8kCNtg==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
anser "^2.0.1"
|
||||
|
||||
"@theia/core@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/core/-/core-1.18.0.tgz#9ab6beb99ac0cf7279f9471135705275c510572f"
|
||||
integrity sha512-b80KrYHC3V88ZhtOx5DxHOH1jA2I41AxVpngoBcNCptu6Ve7q78SSvvoR+oq34mPuT3KgArPVrV0bK+b7hvbSw==
|
||||
"@theia/core@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/core/-/core-1.19.0.tgz#b198f7eabd4e751cf1d20f8bfcc57ef2e8857b52"
|
||||
integrity sha512-4o90p0D+GYhFr8yN8oiyr1Ak6bwoEKxGJxRC5xiQiNR6ZIOfCxMOEWiQntGq5jB+1VO0TYdImyGRzgvJX+/Hig==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.0"
|
||||
"@phosphor/algorithm" "1"
|
||||
@ -2333,7 +2240,7 @@
|
||||
"@phosphor/virtualdom" "1"
|
||||
"@phosphor/widgets" "1"
|
||||
"@primer/octicons-react" "^9.0.0"
|
||||
"@theia/application-package" "1.18.0"
|
||||
"@theia/application-package" "1.19.0"
|
||||
"@types/body-parser" "^1.16.4"
|
||||
"@types/cookie" "^0.3.3"
|
||||
"@types/dompurify" "^2.2.2"
|
||||
@ -2371,6 +2278,7 @@
|
||||
perfect-scrollbar "^1.3.0"
|
||||
react "^16.8.0"
|
||||
react-dom "^16.8.0"
|
||||
react-tooltip "^4.2.21"
|
||||
react-virtualized "^9.20.0"
|
||||
reconnecting-websocket "^4.2.0"
|
||||
reflect-metadata "^0.1.10"
|
||||
@ -2384,25 +2292,25 @@
|
||||
ws "^7.1.2"
|
||||
yargs "^15.3.1"
|
||||
|
||||
"@theia/debug@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/debug/-/debug-1.18.0.tgz#473323cc924e02e37ab92c03c82c4436193e629a"
|
||||
integrity sha512-slq2+9NCt+n6BOVtASnIk4WEUHueFqUfEtuWgD+ouNsMwN3FOxiz2Wo5ixRjDwlwvkalC/T3L1qQxd64QHHMcQ==
|
||||
"@theia/debug@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/debug/-/debug-1.19.0.tgz#e4d6cb67666dfea18b9b0a278d05fc0e62f47f5a"
|
||||
integrity sha512-Bcv6JEB8Fmt9ZkBVPOcpbN6iP1WL7pXsXig+4DqsENIHFJucITks0579GU87cd6WveIm37sjmcOdEMPeNxEKWg==
|
||||
dependencies:
|
||||
"@theia/console" "1.18.0"
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/markers" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/output" "1.18.0"
|
||||
"@theia/preferences" "1.18.0"
|
||||
"@theia/process" "1.18.0"
|
||||
"@theia/task" "1.18.0"
|
||||
"@theia/terminal" "1.18.0"
|
||||
"@theia/userstorage" "1.18.0"
|
||||
"@theia/variable-resolver" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/console" "1.19.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/markers" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/output" "1.19.0"
|
||||
"@theia/preferences" "1.19.0"
|
||||
"@theia/process" "1.19.0"
|
||||
"@theia/task" "1.19.0"
|
||||
"@theia/terminal" "1.19.0"
|
||||
"@theia/userstorage" "1.19.0"
|
||||
"@theia/variable-resolver" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
jsonc-parser "^2.2.0"
|
||||
mkdirp "^0.5.0"
|
||||
p-debounce "^2.1.0"
|
||||
@ -2411,29 +2319,29 @@
|
||||
unzip-stream "^0.3.0"
|
||||
vscode-debugprotocol "^1.32.0"
|
||||
|
||||
"@theia/editor-preview@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/editor-preview/-/editor-preview-1.18.0.tgz#f194d2969512f0574a7dd3cae3fa415c34e2944a"
|
||||
integrity sha512-0JtmNAJlqBf0N/KG1rZKM7PjluR4JXBLOXgWZ36nflEPbSM1alY7DEtTYxQwkarzK4TytDiO9PZ/qPKPnxwMPw==
|
||||
"@theia/editor-preview@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/editor-preview/-/editor-preview-1.19.0.tgz#3d1db40b55569e61d6b4dd30aff9a800758eada1"
|
||||
integrity sha512-/9XKYhp+bB1F99lJfwTxAUeNwHns8kKLlQCpPwtkE2K9yS10vNqM3wL6mKL7sMgwI6a81gWW1fqI9uI562idow==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
|
||||
"@theia/editor@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/editor/-/editor-1.18.0.tgz#0aa862c4cd5ea9671595136b505bab2818757e84"
|
||||
integrity sha512-eE+uLZmcTn6Ka4hGPu0lKgcRuGIOAZyxUwhKOG3/6wjIsdiWrnsD9ES1JlvYSd1VLuN/aZOjj+9vkehxqXjmdg==
|
||||
"@theia/editor@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/editor/-/editor-1.19.0.tgz#66a1699ca78cc65a7a5527f6dbcd280d833f5c42"
|
||||
integrity sha512-7CUjp3lUg/0vtZlvikWvhKTWl4ys8p9WcvH/rcUDuvcJ85IYv+Sz2rwQUHuN8/XPIsHnMDZGhNkX0u/4lznlLw==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/variable-resolver" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/variable-resolver" "1.19.0"
|
||||
"@types/base64-arraybuffer" "0.1.0"
|
||||
base64-arraybuffer "^0.1.5"
|
||||
|
||||
"@theia/electron@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/electron/-/electron-1.18.0.tgz#0c094d560bc85fd234ed36f87476e5f1391189cd"
|
||||
integrity sha512-/VP2tqN2R6v2JAgR3TX3uT1QCmDr8ZZ9RYLrndokSpkKztBfcuhLuj1HjoOX+AUNQZKzuKHNiSSa5P2ZhM/T/w==
|
||||
"@theia/electron@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/electron/-/electron-1.19.0.tgz#82a667365246d7dc714380e98e64f45781bf9d72"
|
||||
integrity sha512-D/fYYuCMWZIdWfocU3kx+968jB6Epb/3aKZKmia4mheu4iXeQ0ANIHO8DM0XNWYy7IZGqh7GlGONgHmjWjR9WQ==
|
||||
dependencies:
|
||||
"@electron/get" "^1.12.4"
|
||||
electron "^9.0.2"
|
||||
@ -2444,25 +2352,25 @@
|
||||
unzipper "^0.9.11"
|
||||
yargs "^15.3.1"
|
||||
|
||||
"@theia/file-search@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/file-search/-/file-search-1.18.0.tgz#4662eecb6e25f7f470268bb643b59e2f6a5ec6ff"
|
||||
integrity sha512-+4lJhWFkk5p7Y20dK+MeiqYV969+CM2rLt/ifxT6fRrpWMI3EZlopN/48O+q2pr2n39hFEx8VCUENFg7p0VEug==
|
||||
"@theia/file-search@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/file-search/-/file-search-1.19.0.tgz#f9f7f8c3b378c83d269d1ce1c86aabc2edd4e87b"
|
||||
integrity sha512-YtiTLlh8EV5qGkj8bif6PiFkF/gaElSPSS2u+IeXCJl6+NE0aE3WZu51VE1GeKW8eZHFwYj32OsC7bqcOl4b+g==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/process" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/process" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
vscode-ripgrep "^1.2.4"
|
||||
|
||||
"@theia/filesystem@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/filesystem/-/filesystem-1.18.0.tgz#b4a283960fdf649e54fd9b57d00e1e385b118da6"
|
||||
integrity sha512-z0UGr+dmsJ8cYTTX15AhD6SD80n4VmwmQKgVGeMFBwVwVRA7uml1BmLspeREepVKnEp5Mllzj8p6sCIrmbwlMg==
|
||||
"@theia/filesystem@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/filesystem/-/filesystem-1.19.0.tgz#1abddbcca544801b3194fe04947d23d60c4b72e5"
|
||||
integrity sha512-ETGWpg+jOTIeWeUTS7ve8bQxE1YoI9wDDPomaBzZtdv+2veSfqAEyau5hx9ZabrvdCflxFXGom/fOKd1mchZUw==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@types/body-parser" "^1.17.0"
|
||||
"@types/multer" "^1.4.7"
|
||||
"@types/rimraf" "^2.0.2"
|
||||
@ -2480,19 +2388,19 @@
|
||||
uuid "^8.0.0"
|
||||
vscode-languageserver-textdocument "^1.0.1"
|
||||
|
||||
"@theia/git@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/git/-/git-1.18.0.tgz#27aaaffd59811835464babbfa4cb72f9f6c5e4d6"
|
||||
integrity sha512-9urYFBu15zzWFVQ//pt9Pto6vcmvHmIsQsYDtMTN6ioYzpV9PhKr09353H7TX5hrw6kJIEKEWSatBYNqd8sqRw==
|
||||
"@theia/git@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/git/-/git-1.19.0.tgz#48ad2ad1d28fdcb63ad7366ef509d402e0420101"
|
||||
integrity sha512-cPFJGlKrkv6nz8+AhVrO6fpvQl+PmWfx4lDvYE1OAzuCaCnifGqqF8oaBcIL43kBIMnMJCSRVeJPdk2kAURrIQ==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/scm" "1.18.0"
|
||||
"@theia/scm-extra" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@theia/scm" "1.19.0"
|
||||
"@theia/scm-extra" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
"@types/diff" "^3.2.2"
|
||||
"@types/p-queue" "^2.3.1"
|
||||
diff "^3.4.0"
|
||||
@ -2504,15 +2412,15 @@
|
||||
p-queue "^2.4.2"
|
||||
ts-md5 "^1.2.2"
|
||||
|
||||
"@theia/keymaps@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/keymaps/-/keymaps-1.18.0.tgz#ce19c4a8a1220698d6ef096074997ea0c850a2a7"
|
||||
integrity sha512-S0KMLliVGXUZws4d5w1wc0yfn43qiPRaeWKIlp4b7+gNN0qCze52eSG+TdI9UnlWth2Gsx39fqxpG5WCzMCYhA==
|
||||
"@theia/keymaps@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/keymaps/-/keymaps-1.19.0.tgz#f449cadb8fa8bc8ed110a3a0b38cd6a0fb351ada"
|
||||
integrity sha512-1o+t4kq3VKoKXmGUTdBOpMZxsKnAf9gfXJPyFeow2Qjsl+kdDsBurL8If4LH1PRYi6C+ATkyo7YycZ4/60BsuQ==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/userstorage" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/userstorage" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
"@types/lodash.debounce" "4.0.3"
|
||||
ajv "^6.5.3"
|
||||
jsonc-parser "^2.2.0"
|
||||
@ -2528,22 +2436,22 @@
|
||||
glob "^7.2.0"
|
||||
typescript "^4.4.3"
|
||||
|
||||
"@theia/markers@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/markers/-/markers-1.18.0.tgz#8e1b0c1c55727915f4ea9c384dcf0c7d250774b8"
|
||||
integrity sha512-gngj04GTRGS+RqTVYzp1rHGK+TcXEEdZRzJiHHSYjvGSj5XWioxE7cFwZDhQB0TGiHfXNauuWwRj5zJxXFceNg==
|
||||
"@theia/markers@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/markers/-/markers-1.19.0.tgz#5926256dbc6a3ca1e5f3587ba87ebf747e18f8f3"
|
||||
integrity sha512-kvjPL8llku578ChNB60YtL1dnaqRU74PDOInnhZYvqo8M1TQFbqlgXco9VujZacrZCi3nhtWshJxf0td3hKeQg==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
|
||||
"@theia/messages@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/messages/-/messages-1.18.0.tgz#d29ebb00a19daa1000519468ac59339547944d1d"
|
||||
integrity sha512-TUU4/2of0BJuEayqKKsz9V6SRHPp4HYnb1H9IuJl2aavRAEEd7bk1iLB6n7UgQUHsVMqlkYqjEJdEJFuptCqTg==
|
||||
"@theia/messages@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/messages/-/messages-1.19.0.tgz#f0e9f9b8e4567f281e00982e925506a1948db494"
|
||||
integrity sha512-ancIsyoR6FhqL1AzWwBYTzINUzReZ1pANaG6S3sDGaP8qWeFVXReRAM7qSCkSUiFkknTuCqfQ8RLSSRg+8VXpA==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
markdown-it "^8.4.0"
|
||||
react-perfect-scrollbar "^1.5.3"
|
||||
ts-md5 "^1.2.2"
|
||||
@ -2553,32 +2461,32 @@
|
||||
resolved "https://registry.yarnpkg.com/@theia/monaco-editor-core/-/monaco-editor-core-0.23.0.tgz#7a1cbb7a857a509ce8e75c9965abea752bd76e80"
|
||||
integrity sha512-WyrotTd6ZfeXAX4icgFALTzlqE356tAQ5nRuwa2E0Qdp2YIO9GDcw5G2l2NJ8INO2ygujbE5pEdD5kJM5N4TOQ==
|
||||
|
||||
"@theia/monaco@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/monaco/-/monaco-1.18.0.tgz#a2bfcf8688dbe594f2e4e0f7924d39e4059ea841"
|
||||
integrity sha512-XC/b21QuYXQwVjIIi8lse1VdV9nWRMb22h22AbPhMr/pGVq9ITH3kNA2ReDeyCRpn2eIEE9g9sGYwfs3wCB1YA==
|
||||
"@theia/monaco@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/monaco/-/monaco-1.19.0.tgz#ce4c2db38763201ef3c5d1e4c6b58796dd1e42d6"
|
||||
integrity sha512-1k4rBQn7TA+v0TEsnmTMgGHfvSWlXrDbrxh5Iv9JsfgGYNaofKVyUD/v8ZVSrb4kqybhabHVhIBZe6UWzLDBpw==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/markers" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/markers" "1.19.0"
|
||||
"@theia/monaco-editor-core" "0.23.0"
|
||||
"@theia/outline-view" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/outline-view" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
fast-plist "^0.1.2"
|
||||
idb "^4.0.5"
|
||||
jsonc-parser "^2.2.0"
|
||||
onigasm "^2.2.0"
|
||||
vscode-textmate "^4.4.0"
|
||||
|
||||
"@theia/navigator@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/navigator/-/navigator-1.18.0.tgz#0f226fe223937c0dfc8c77854c607ed1d22e2778"
|
||||
integrity sha512-Q9nNIrpgu8npGu3TU0JexdL4mP/XzIe4ZVZocmdV14pib98yS+mb7kT1AdCdvCr54eLxkdQMd25zqWflEexWCA==
|
||||
"@theia/navigator@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/navigator/-/navigator-1.19.0.tgz#0541a032297840d9f74c348d9879a8d8e3c4fcfb"
|
||||
integrity sha512-zZOI6+qrluodmsW96y7LWTWlWLGJPILw05+oTTJv4alIBxl+geKA8J7HH3ibVWXX6hK2FNe25UohzTQ7Uqwjbg==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
"@theia/node-pty@0.9.0-theia.6":
|
||||
@ -2588,34 +2496,25 @@
|
||||
dependencies:
|
||||
nan "^2.14.0"
|
||||
|
||||
"@theia/outline-view@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/outline-view/-/outline-view-1.18.0.tgz#220bdd9f9d3adb64e1168512dbbe49861dea3f02"
|
||||
integrity sha512-1ln78ZBK0aoMaoT91m5s9HYrQ/N18NmLnkSNP6wLr4DdGPPW60ptIwJkrEBjflni4kZ8DhGTrYt4A6yeaj/NyA==
|
||||
"@theia/outline-view@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/outline-view/-/outline-view-1.19.0.tgz#6fc34a3fd7ec73586405208a203ad25a93d9ac4f"
|
||||
integrity sha512-mUH1hjr/n8P7JcofTBtsx2CCpDHA9dUCG3J2i2fs6KdrWRou2WuFdnW9EG/PKDRqTTMQiJBgYOb9dBfbi7vBgw==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
perfect-scrollbar "^1.3.0"
|
||||
|
||||
"@theia/output@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/output/-/output-1.18.0.tgz#d404cc1bcdf23f7a6d086f296b60dc145a3211cb"
|
||||
integrity sha512-wJ5vaJoKZUoV4FyKn/COVErawbfCg3Xb/LoB9sVmr260lU0h4SOjoj5n9J48iyS1C2RvIcmsiFR17hACRDffBQ==
|
||||
"@theia/output@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/output/-/output-1.19.0.tgz#71d83f1fb4a5505bfbfec5acc4cfdbff46777a3b"
|
||||
integrity sha512-H9EedIxLzYxmP7vzFvgB4PWBLsVtf8WPu/x6nOblaPwiEQVQdIzB6yvqXx1oZgSay1RwPVJzuHpv70F7NEbwPA==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@types/p-queue" "^2.3.1"
|
||||
p-queue "^2.4.2"
|
||||
|
||||
"@theia/ovsx-client@1.17.2":
|
||||
version "1.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@theia/ovsx-client/-/ovsx-client-1.17.2.tgz#fbf0c404d69f7e06ac4b33c26f642e6ccb68fda1"
|
||||
integrity sha512-Is5tYaFfSoti6KOE6TR1eQH9n0Lpgsi2K7MMa1Oe/ETKDzUTf2aq+8bR/BPtqjId8ldNJETQconvQNKhKPL0ew==
|
||||
dependencies:
|
||||
"@types/bent" "^7.0.1"
|
||||
bent "^7.1.0"
|
||||
semver "^5.4.1"
|
||||
|
||||
"@theia/ovsx-client@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/ovsx-client/-/ovsx-client-1.19.0.tgz#6d350c831c7e3280a10269b1ce72f4312896d441"
|
||||
@ -2625,52 +2524,53 @@
|
||||
bent "^7.1.0"
|
||||
semver "^5.4.1"
|
||||
|
||||
"@theia/plugin-ext-vscode@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/plugin-ext-vscode/-/plugin-ext-vscode-1.18.0.tgz#ef1e44992c0fb5b52d02a4c9b93b1da94f3f9a94"
|
||||
integrity sha512-n64RzmlHoawNZY8pew9/e5lVMPqFGLmyprZm7oklaoR5h11l1/qB7tIe9JPLUOpvqoNtYhA9KYah4oeZ37OgNQ==
|
||||
"@theia/plugin-ext-vscode@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/plugin-ext-vscode/-/plugin-ext-vscode-1.19.0.tgz#85d129d6dd7ad77a337547b21051dd2fff625f4b"
|
||||
integrity sha512-OdXDXNBI7pU2Wziy2WY10m8tpQ/Mcj5oCkmO/kkBQk/TsbyNxJjIdDQWU/sGUiupOXjJZcuuCbNwJC+n5bFhug==
|
||||
dependencies:
|
||||
"@theia/callhierarchy" "1.18.0"
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/plugin" "1.18.0"
|
||||
"@theia/plugin-ext" "1.18.0"
|
||||
"@theia/terminal" "1.18.0"
|
||||
"@theia/userstorage" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/callhierarchy" "1.19.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@theia/plugin" "1.19.0"
|
||||
"@theia/plugin-ext" "1.19.0"
|
||||
"@theia/terminal" "1.19.0"
|
||||
"@theia/userstorage" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
"@types/request" "^2.0.3"
|
||||
filenamify "^4.1.0"
|
||||
request "^2.82.0"
|
||||
|
||||
"@theia/plugin-ext@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/plugin-ext/-/plugin-ext-1.18.0.tgz#f841e66d29c4cc56e4f73f4175168fcaeccdd0c9"
|
||||
integrity sha512-6jI19cu5zJtDc38KqbqP95ujs/Ixbl6663CWILiPzw1+wCWmtrCogZmsgNWjpVUCnFBsKkei6bM5HEq8tAs9kg==
|
||||
"@theia/plugin-ext@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/plugin-ext/-/plugin-ext-1.19.0.tgz#9b9a4bd0b1992f1d631609e167465e22194647ff"
|
||||
integrity sha512-fxx6hMPUkwiIwYzxJ1KOwcb2U+659Uge/aRZf4dEC9ESqeLEo5LqpfXkOLABfym8MDLSXHaUjX2hnbgFpIOAxA==
|
||||
dependencies:
|
||||
"@theia/bulk-edit" "1.18.0"
|
||||
"@theia/callhierarchy" "1.18.0"
|
||||
"@theia/console" "1.18.0"
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/debug" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/file-search" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/markers" "1.18.0"
|
||||
"@theia/messages" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/output" "1.18.0"
|
||||
"@theia/plugin" "1.18.0"
|
||||
"@theia/preferences" "1.18.0"
|
||||
"@theia/scm" "1.18.0"
|
||||
"@theia/search-in-workspace" "1.18.0"
|
||||
"@theia/task" "1.18.0"
|
||||
"@theia/terminal" "1.18.0"
|
||||
"@theia/timeline" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/bulk-edit" "1.19.0"
|
||||
"@theia/callhierarchy" "1.19.0"
|
||||
"@theia/console" "1.19.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/debug" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/file-search" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/markers" "1.19.0"
|
||||
"@theia/messages" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@theia/output" "1.19.0"
|
||||
"@theia/plugin" "1.19.0"
|
||||
"@theia/preferences" "1.19.0"
|
||||
"@theia/scm" "1.19.0"
|
||||
"@theia/search-in-workspace" "1.19.0"
|
||||
"@theia/task" "1.19.0"
|
||||
"@theia/terminal" "1.19.0"
|
||||
"@theia/timeline" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
"@types/markdown-it" "*"
|
||||
"@types/mime" "^2.0.1"
|
||||
decompress "^4.2.1"
|
||||
escape-html "^1.0.3"
|
||||
@ -2679,6 +2579,7 @@
|
||||
jsonc-parser "^2.2.0"
|
||||
lodash.clonedeep "^4.5.0"
|
||||
macaddress "^0.2.9"
|
||||
markdown-it "^8.4.0"
|
||||
mime "^2.4.4"
|
||||
ps-tree "^1.2.0"
|
||||
request "^2.82.0"
|
||||
@ -2687,140 +2588,140 @@
|
||||
vscode-debugprotocol "^1.32.0"
|
||||
vscode-textmate "^4.0.1"
|
||||
|
||||
"@theia/plugin@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/plugin/-/plugin-1.18.0.tgz#a7844aad0b415a192e9dbb3ab61c4ef967132b8c"
|
||||
integrity sha512-yWI1oi89DQ4XKZb9UpCTTUSLSwh28jzE6qqzvnfAoJGGn/3ZYUlnyVSCiTpFQVTh2npFtU/rl0G3GZ+NvLi81A==
|
||||
"@theia/plugin@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/plugin/-/plugin-1.19.0.tgz#0582e954070a8ce03ec784ef39e0b8a3f3e43640"
|
||||
integrity sha512-Afhjg4RZPM4tyFQ2yjqf6LrEI+3aSAkaibGw99Jdcv2m/IXpARa3VdyZX00VDbEgMLiFtfXHckiCp5L8yhY7ug==
|
||||
|
||||
"@theia/preferences@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/preferences/-/preferences-1.18.0.tgz#5ee333bc6771b734b8c2a2d8b592faf6307eb960"
|
||||
integrity sha512-CN2q3XaeGLZHJ2R9NHUAaHRmw6flJ15AglCOzzsME85TNks4Z4FPJM/gyOQwSCCrpIsLXkRPt+V6Q3m6hLz0UA==
|
||||
"@theia/preferences@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/preferences/-/preferences-1.19.0.tgz#2bc870e3fb686c05b1582cef4878f766fa7715f6"
|
||||
integrity sha512-c1wnvbFThqEFZZtcj18MHOZSkMxk0A3dHPW02+aKQYt2eIaRX1D8Whn7rxIRKs8WziggMk2xvKgjN/phZ99ERw==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/userstorage" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/userstorage" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
jsonc-parser "^2.2.0"
|
||||
|
||||
"@theia/process@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/process/-/process-1.18.0.tgz#e499d84134c5bc9fde5bea9f21c61d091aea5f33"
|
||||
integrity sha512-xqJqVJHRC5Ar+FN7Pt/xfIOQspzZ3u4mgZJ47s4GuaH/7da5LnOe1q5dULft5oFIZNgMkffqrsMWSX0VKGiW5Q==
|
||||
"@theia/process@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/process/-/process-1.19.0.tgz#c2b00608ad39c7b73f9ab9b9bbbf11208f7270e4"
|
||||
integrity sha512-yn4UxC3Y2cWGeEpX4vCVp8T332v8lu5OB+Zb+xtprQ5O7MODMrYbnNgrp9HparYJfu/K7xO9S2J0hQV6QO5B9g==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/node-pty" "0.9.0-theia.6"
|
||||
string-argv "^0.1.1"
|
||||
|
||||
"@theia/scm-extra@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/scm-extra/-/scm-extra-1.18.0.tgz#3115c62982252629053b15c1f760f6caebedd601"
|
||||
integrity sha512-VWbSoRCzn3cLQgSj3DsL+6tew8HU3nSWeTjfgq7xn1SgjfdSJZSfNLH9zbiqPTEe4NVQRIoZ/9jhB1IKFLZY+Q==
|
||||
"@theia/scm-extra@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/scm-extra/-/scm-extra-1.19.0.tgz#2bc3b8863518d909d2b58c970648564dd1517fdd"
|
||||
integrity sha512-ihXvl6RVIoEXwyoR580UWqr6p7cp0k+iAHssjfsPWbgVf916PWJFL/qE8xyixYtzKwp+kwifff6CrewxBvXnwQ==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/scm" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@theia/scm" "1.19.0"
|
||||
|
||||
"@theia/scm@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/scm/-/scm-1.18.0.tgz#62a9f5a1b748802b0b4bc9847e43d8a87da0e781"
|
||||
integrity sha512-n+pLloNuTl+2edApIiL7M4BYo3SAwWIdzjcteDDkEQFEeSZRfkQ8izDhuD17Klh+Wn0IrQkeJukmGGauDzNLMA==
|
||||
"@theia/scm@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/scm/-/scm-1.19.0.tgz#f4848970181084ad689835db79cc2154b025e6b9"
|
||||
integrity sha512-rc4e60p16a2/TEU9kAhR3XF89GdTcGmJxeuQRGrq8NzZjbIyHmW2CMdmFY8T6vwBRA80vlwfDmqr2F0zL5cCXQ==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@types/diff" "^3.2.2"
|
||||
diff "^3.4.0"
|
||||
p-debounce "^2.1.0"
|
||||
react-autosize-textarea "^7.0.0"
|
||||
ts-md5 "^1.2.2"
|
||||
|
||||
"@theia/search-in-workspace@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/search-in-workspace/-/search-in-workspace-1.18.0.tgz#b23f0b5059848b6f41686c4c7061f1d22821c331"
|
||||
integrity sha512-QqBaZhSgZ6dU5tE7J0zngelPYqH7Sx02bTrvwwlCeGOB+ow7pzfeaiqKIC9YBFZ9nVPBYBIvp/JbZDMOXDSBoQ==
|
||||
"@theia/search-in-workspace@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/search-in-workspace/-/search-in-workspace-1.19.0.tgz#20fa0da70a7650751d0a0642225604bcabf53521"
|
||||
integrity sha512-7gCgDNCvWphaJjftqXLL0+XEww6Kyz5tnRAffNkURR8X8FnBbptWMePq1sUCewdsWrkxQeRBoGagVV2jy/qLxA==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/process" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
"@theia/process" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
minimatch "^3.0.4"
|
||||
vscode-ripgrep "^1.2.4"
|
||||
|
||||
"@theia/task@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/task/-/task-1.18.0.tgz#52856c4a3526e71ecabc6d9f8f94b2bb87db1c47"
|
||||
integrity sha512-vkD8JGr1IeVYpWfzT2uWrqkrC8GpjLd9BN46j0DHLLYCxX4H/A7laPVBzkuL4Z1sumlR1JEFJeW3zIqFZk5Q3Q==
|
||||
"@theia/task@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/task/-/task-1.19.0.tgz#4089ef3f2d1b8fe3c800f3dde276d93d66910152"
|
||||
integrity sha512-gGbVK08Ve5we1pO/X7HyjW3WJCjXBKG/G9G7taLhgzOjLrbXrJIDyEzxGm9BIeN5oJ9KfoaEJ5Y0NRz98ZKaTQ==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/markers" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/preferences" "1.18.0"
|
||||
"@theia/process" "1.18.0"
|
||||
"@theia/terminal" "1.18.0"
|
||||
"@theia/userstorage" "1.18.0"
|
||||
"@theia/variable-resolver" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/markers" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/preferences" "1.19.0"
|
||||
"@theia/process" "1.19.0"
|
||||
"@theia/terminal" "1.19.0"
|
||||
"@theia/userstorage" "1.19.0"
|
||||
"@theia/variable-resolver" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
ajv "^6.5.3"
|
||||
async-mutex "^0.3.1"
|
||||
jsonc-parser "^2.2.0"
|
||||
p-debounce "^2.1.0"
|
||||
|
||||
"@theia/terminal@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/terminal/-/terminal-1.18.0.tgz#d51b78e06e3c8bda1b0f1f5e53f0643094d9376a"
|
||||
integrity sha512-ks68J6+TSVRj2IMmKpdaASgYrrh55DkGEKNc9I91EcOn6eM5bf/lI23yirwtdV8T4hXse7SReDngNC666qSaEQ==
|
||||
"@theia/terminal@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/terminal/-/terminal-1.19.0.tgz#3ed47a50830708f681d27d5514f9626ab08e10f2"
|
||||
integrity sha512-WOLJ/YKjtjCpvI2px3AlbifTxN1DIytOe/nVjc2yOZZLKD/hFYVPGqzMghpS1JOSfSvYdwxgzCwDZOlSAEnFkA==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/editor" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/monaco" "1.18.0"
|
||||
"@theia/process" "1.18.0"
|
||||
"@theia/workspace" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/editor" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/monaco" "1.19.0"
|
||||
"@theia/process" "1.19.0"
|
||||
"@theia/workspace" "1.19.0"
|
||||
xterm "~4.11.0"
|
||||
xterm-addon-fit "~0.5.0"
|
||||
xterm-addon-search "~0.8.0"
|
||||
|
||||
"@theia/timeline@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/timeline/-/timeline-1.18.0.tgz#46acf7a307cfbedd57092e892d3b8adf9ccf2c83"
|
||||
integrity sha512-s+nJtUZmj3baT1Md/grW52PfsvYvasQq+EEZN+hqjwBLwzF1ooZUTVHcMFDOLCK4BsGhP2KJI5vpS18G6W4G4Q==
|
||||
"@theia/timeline@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/timeline/-/timeline-1.19.0.tgz#453baa24a0241ff7e459a42414d9a86f496c85f9"
|
||||
integrity sha512-/wcBYdmN2pde65/DjbByZkqJTTuemXGndokjhW6OaQvuPUOLIYQaAlrhypJXtED4X3RDoykVYkQqbYtdUBAn1A==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/navigator" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/navigator" "1.19.0"
|
||||
|
||||
"@theia/userstorage@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/userstorage/-/userstorage-1.18.0.tgz#95dcd86bb363403464312c8619a776af78216f83"
|
||||
integrity sha512-ZPoECJqw6LGRkQU/iPNC3iv1DA7HolSlXs94pjD1eeEcFL/75PJ6PXnna7trzD01POZrgNphCvuvkRqAn7/T4g==
|
||||
"@theia/userstorage@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/userstorage/-/userstorage-1.19.0.tgz#1a226ebe099f395f36e792077f3eb1e6eb7bbde2"
|
||||
integrity sha512-azCZX3p/C6Z+K0qPNCIOkS80c2yCYHu5jU4FsPkM8UXfcM2ilprxMDmpZVCTsPno6vohm+aT3W5r1oyhLRA1IQ==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
|
||||
"@theia/variable-resolver@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/variable-resolver/-/variable-resolver-1.18.0.tgz#c7be990b603003a27262809e9c483e0f33d01f53"
|
||||
integrity sha512-uQ+EzErQ5B8mOOKUyTUFH7zmBwisp0jfe207Ox07O9LlZys3E/CYOIryo3Hn74LUiprFzMPpLFYyiVBqDcs5VA==
|
||||
"@theia/variable-resolver@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/variable-resolver/-/variable-resolver-1.19.0.tgz#fb728ac5bec6ad0a8edb6e1a2330183109bbae59"
|
||||
integrity sha512-1VV1XC1HZpVGDbS5QAGga6XVnLkm0arT8Bh4UaYUrGQtR4WyfdVktjCrF6J2TUmqQXOendixk7g2UEEq/pehIA==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
|
||||
"@theia/workspace@1.18.0":
|
||||
version "1.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/workspace/-/workspace-1.18.0.tgz#91af0b5a0e5e5c07c0cb08bed2daf4faa8a6c559"
|
||||
integrity sha512-WDzQ4rHHFwbk6e7Wk4vsWEUREo15nBjRid1hwwkBr6uWp04eqFDwBaSvaSooPGWZbOqXIrLSB7z7DQh9Cv3nkg==
|
||||
"@theia/workspace@1.19.0":
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@theia/workspace/-/workspace-1.19.0.tgz#09aa42264d38504c8e390317e6275730558b0473"
|
||||
integrity sha512-FTZwuvHbrQwRbFxLZbgfdvLT53UCi4qXEAaPFLYK4g5z2oAwoAhxOQzhuIOn21c3sjJzlFirKZgU6Rmvdx++Lg==
|
||||
dependencies:
|
||||
"@theia/core" "1.18.0"
|
||||
"@theia/filesystem" "1.18.0"
|
||||
"@theia/variable-resolver" "1.18.0"
|
||||
"@theia/core" "1.19.0"
|
||||
"@theia/filesystem" "1.19.0"
|
||||
"@theia/variable-resolver" "1.19.0"
|
||||
ajv "^6.5.3"
|
||||
jsonc-parser "^2.2.0"
|
||||
moment "2.24.0"
|
||||
@ -3047,6 +2948,11 @@
|
||||
dependencies:
|
||||
keytar "*"
|
||||
|
||||
"@types/linkify-it@*":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9"
|
||||
integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==
|
||||
|
||||
"@types/lodash.debounce@4.0.3":
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.3.tgz#d712aee9e6136be77f70523ed9f0fc049a6cf15a"
|
||||
@ -3078,6 +2984,19 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
|
||||
integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
|
||||
|
||||
"@types/markdown-it@*":
|
||||
version "12.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51"
|
||||
integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==
|
||||
dependencies:
|
||||
"@types/linkify-it" "*"
|
||||
"@types/mdurl" "*"
|
||||
|
||||
"@types/mdurl@*":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
|
||||
integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
|
||||
|
||||
"@types/mime-types@^2.1.0":
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73"
|
||||
@ -12083,6 +12002,14 @@ react-tabs@^3.1.2:
|
||||
clsx "^1.1.0"
|
||||
prop-types "^15.5.0"
|
||||
|
||||
react-tooltip@^4.2.21:
|
||||
version "4.2.21"
|
||||
resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-4.2.21.tgz#840123ed86cf33d50ddde8ec8813b2960bfded7f"
|
||||
integrity sha512-zSLprMymBDowknr0KVDiJ05IjZn9mQhhg4PRsqln0OZtURAJ1snt1xi5daZfagsh6vfsziZrc9pErPTDY1ACig==
|
||||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
uuid "^7.0.3"
|
||||
|
||||
react-transition-group@^4.3.0:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9"
|
||||
@ -14373,6 +14300,11 @@ uuid@^3.0.1, uuid@^3.2.1, uuid@^3.3.2:
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
uuid@^7.0.3:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
|
||||
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
|
||||
|
||||
uuid@^8.0.0, uuid@^8.3.2:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||
|
Loading…
x
Reference in New Issue
Block a user