chore: use theia@1.46.1

Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
This commit is contained in:
Akos Kitta 2024-02-09 15:47:51 +01:00
parent aa9b10d68e
commit de5b91f480
55 changed files with 1961 additions and 1914 deletions

View File

@ -24,27 +24,28 @@
}, },
"dependencies": { "dependencies": {
"@grpc/grpc-js": "^1.8.14", "@grpc/grpc-js": "^1.8.14",
"@theia/application-package": "1.41.0", "@theia/application-package": "1.46.1",
"@theia/core": "1.41.0", "@theia/core": "1.46.1",
"@theia/debug": "1.41.0", "@theia/debug": "1.46.1",
"@theia/editor": "1.41.0", "@theia/editor": "1.46.1",
"@theia/electron": "1.41.0", "@theia/electron": "1.46.1",
"@theia/filesystem": "1.41.0", "@theia/filesystem": "1.46.1",
"@theia/keymaps": "1.41.0", "@theia/keymaps": "1.46.1",
"@theia/markers": "1.41.0", "@theia/markers": "1.46.1",
"@theia/messages": "1.41.0", "@theia/messages": "1.46.1",
"@theia/monaco": "1.41.0", "@theia/monaco": "1.46.1",
"@theia/monaco-editor-core": "1.72.3", "@theia/monaco-editor-core": "1.72.3",
"@theia/navigator": "1.41.0", "@theia/navigator": "1.46.1",
"@theia/outline-view": "1.41.0", "@theia/outline-view": "1.46.1",
"@theia/output": "1.41.0", "@theia/output": "1.46.1",
"@theia/plugin-ext": "1.41.0", "@theia/plugin-ext": "1.46.1",
"@theia/preferences": "1.41.0", "@theia/preferences": "1.46.1",
"@theia/scm": "1.41.0", "@theia/scm": "1.46.1",
"@theia/search-in-workspace": "1.41.0", "@theia/search-in-workspace": "1.46.1",
"@theia/terminal": "1.41.0", "@theia/terminal": "1.46.1",
"@theia/typehierarchy": "1.41.0", "@theia/test": "1.46.1",
"@theia/workspace": "1.41.0", "@theia/typehierarchy": "1.46.1",
"@theia/workspace": "1.46.1",
"@tippyjs/react": "^4.2.5", "@tippyjs/react": "^4.2.5",
"@types/auth0-js": "^9.21.3", "@types/auth0-js": "^9.21.3",
"@types/btoa": "^1.2.3", "@types/btoa": "^1.2.3",

View File

@ -1,7 +1,7 @@
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution'; import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';
import { ColorRegistry } from '@theia/core/lib/browser/color-registry'; import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
import { CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution'; import { CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
import { import {
TabBarToolbarContribution, TabBarToolbarContribution,

View File

@ -5,10 +5,8 @@ import { CommandContribution } from '@theia/core/lib/common/command';
import { bindViewContribution } from '@theia/core/lib/browser/shell/view-contribution'; import { bindViewContribution } from '@theia/core/lib/browser/shell/view-contribution';
import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar'; import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
import { WebSocketConnectionProvider } from '@theia/core/lib/browser/messaging/ws-connection-provider'; import { WebSocketConnectionProvider } from '@theia/core/lib/browser/messaging/ws-connection-provider';
import { import { FrontendApplication as TheiaFrontendApplication } from '@theia/core/lib/browser/frontend-application';
FrontendApplicationContribution, import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
FrontendApplication as TheiaFrontendApplication,
} from '@theia/core/lib/browser/frontend-application';
import { LibraryListWidget } from './library/library-list-widget'; import { LibraryListWidget } from './library/library-list-widget';
import { ArduinoFrontendContribution } from './arduino-frontend-contribution'; import { ArduinoFrontendContribution } from './arduino-frontend-contribution';
import { import {
@ -266,7 +264,7 @@ import {
IDEUpdaterDialog, IDEUpdaterDialog,
IDEUpdaterDialogProps, IDEUpdaterDialogProps,
} from './dialogs/ide-updater/ide-updater-dialog'; } from './dialogs/ide-updater/ide-updater-dialog';
import { ElectronIpcConnectionProvider } from '@theia/core/lib/electron-browser/messaging/electron-ipc-connection-provider'; import { ElectronIpcConnectionProvider } from '@theia/core/lib/electron-browser/messaging/electron-ipc-connection-source';
import { MonitorModel } from './monitor-model'; import { MonitorModel } from './monitor-model';
import { MonitorManagerProxyClientImpl } from './monitor-manager-proxy-client-impl'; import { MonitorManagerProxyClientImpl } from './monitor-manager-proxy-client-impl';
import { EditorManager as TheiaEditorManager } from '@theia/editor/lib/browser/editor-manager'; import { EditorManager as TheiaEditorManager } from '@theia/editor/lib/browser/editor-manager';
@ -286,10 +284,6 @@ import { PreferenceTreeGenerator } from './theia/preferences/preference-tree-gen
import { PreferenceTreeGenerator as TheiaPreferenceTreeGenerator } from '@theia/preferences/lib/browser/util/preference-tree-generator'; import { PreferenceTreeGenerator as TheiaPreferenceTreeGenerator } from '@theia/preferences/lib/browser/util/preference-tree-generator';
import { AboutDialog } from './theia/core/about-dialog'; import { AboutDialog } from './theia/core/about-dialog';
import { AboutDialog as TheiaAboutDialog } from '@theia/core/lib/browser/about-dialog'; import { AboutDialog as TheiaAboutDialog } from '@theia/core/lib/browser/about-dialog';
import {
SurveyNotificationService,
SurveyNotificationServicePath,
} from '../common/protocol/survey-service';
import { WindowContribution } from './theia/core/window-contribution'; import { WindowContribution } from './theia/core/window-contribution';
import { WindowContribution as TheiaWindowContribution } from '@theia/core/lib/browser/window-contribution'; import { WindowContribution as TheiaWindowContribution } from '@theia/core/lib/browser/window-contribution';
import { CoreErrorHandler } from './contributions/core-error-handler'; import { CoreErrorHandler } from './contributions/core-error-handler';
@ -372,6 +366,8 @@ import { DebugSessionWidget } from '@theia/debug/lib/browser/view/debug-session-
import { DebugConfigurationWidget } from './theia/debug/debug-configuration-widget'; import { DebugConfigurationWidget } from './theia/debug/debug-configuration-widget';
import { DebugConfigurationWidget as TheiaDebugConfigurationWidget } from '@theia/debug/lib/browser/view/debug-configuration-widget'; import { DebugConfigurationWidget as TheiaDebugConfigurationWidget } from '@theia/debug/lib/browser/view/debug-configuration-widget';
import { DebugToolBar } from '@theia/debug/lib/browser/view/debug-toolbar-widget'; import { DebugToolBar } from '@theia/debug/lib/browser/view/debug-toolbar-widget';
import { TestViewContribution as TheiaTestViewContribution } from '@theia/test/lib/browser/view/test-view-contribution';
import { TestViewContribution } from './theia/test/test-view-contribution';
// Hack to fix copy/cut/paste issue after electron version update in Theia. // Hack to fix copy/cut/paste issue after electron version update in Theia.
// https://github.com/eclipse-theia/theia/issues/12487 // https://github.com/eclipse-theia/theia/issues/12487
@ -552,15 +548,6 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
WorkspaceVariableContribution WorkspaceVariableContribution
); );
bind(SurveyNotificationService)
.toDynamicValue((context) => {
return ElectronIpcConnectionProvider.createProxy(
context.container,
SurveyNotificationServicePath
);
})
.inSingletonScope();
// Layout and shell customizations. // Layout and shell customizations.
rebind(TheiaOutlineViewContribution) rebind(TheiaOutlineViewContribution)
.to(OutlineViewContribution) .to(OutlineViewContribution)
@ -1082,4 +1069,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
rebind(TheiaTerminalFrontendContribution).toService( rebind(TheiaTerminalFrontendContribution).toService(
TerminalFrontendContribution TerminalFrontendContribution
); );
// Hides the Test Explorer from the side-bar
bind(TestViewContribution).toSelf().inSingletonScope();
rebind(TheiaTestViewContribution).toService(TestViewContribution);
}); });

View File

@ -260,14 +260,6 @@ const properties: ArduinoPreferenceSchemaProperties = {
), ),
default: 'https://auth.arduino.cc/login#/register', default: 'https://auth.arduino.cc/login#/register',
}, },
'arduino.survey.notification': {
type: 'boolean',
description: nls.localize(
'arduino/preferences/survey.notification',
'True if users should be notified if a survey is available. True by default.'
),
default: true,
},
'arduino.cli.daemon.debug': { 'arduino.cli.daemon.debug': {
type: 'boolean', type: 'boolean',
description: nls.localize( description: nls.localize(
@ -333,7 +325,6 @@ export interface ArduinoConfiguration {
'arduino.auth.domain': string; 'arduino.auth.domain': string;
'arduino.auth.audience': string; 'arduino.auth.audience': string;
'arduino.auth.registerUri': string; 'arduino.auth.registerUri': string;
'arduino.survey.notification': boolean;
'arduino.cli.daemon.debug': boolean; 'arduino.cli.daemon.debug': boolean;
'arduino.sketch.inoBlueprint': string; 'arduino.sketch.inoBlueprint': string;
'arduino.checkForUpdates': boolean; 'arduino.checkForUpdates': boolean;

View File

@ -3,7 +3,7 @@ import { Emitter } from '@theia/core/lib/common/event';
import { JsonRpcProxy } from '@theia/core/lib/common/messaging/proxy-factory'; import { JsonRpcProxy } from '@theia/core/lib/common/messaging/proxy-factory';
import { WindowService } from '@theia/core/lib/browser/window/window-service'; import { WindowService } from '@theia/core/lib/browser/window/window-service';
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { import {
CommandRegistry, CommandRegistry,
CommandContribution, CommandContribution,

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import { MessageService } from '@theia/core/lib/common/message-service'; import { MessageService } from '@theia/core/lib/common/message-service';
import { MessageType } from '@theia/core/lib/common/message-service-protocol'; import { MessageType } from '@theia/core/lib/common/message-service-protocol';

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
import { StorageService } from '@theia/core/lib/browser/storage-service'; import { StorageService } from '@theia/core/lib/browser/storage-service';
import type { import type {

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
import { StorageService } from '@theia/core/lib/browser/storage-service'; import { StorageService } from '@theia/core/lib/browser/storage-service';
import { import {

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import { Emitter, Event } from '@theia/core/lib/common/event'; import { Emitter, Event } from '@theia/core/lib/common/event';

View File

@ -1,8 +1,6 @@
import { Dialog } from '@theia/core/lib/browser/dialogs'; import { Dialog } from '@theia/core/lib/browser/dialogs';
import type { import type { FrontendApplication } from '@theia/core/lib/browser/frontend-application';
FrontendApplication, import type { OnWillStopAction } from '@theia/core/lib/browser/frontend-application-contribution';
OnWillStopAction,
} from '@theia/core/lib/browser/frontend-application';
import { ApplicationShell } from '@theia/core/lib/browser/shell/application-shell'; import { ApplicationShell } from '@theia/core/lib/browser/shell/application-shell';
import { nls } from '@theia/core/lib/common/nls'; import { nls } from '@theia/core/lib/common/nls';
import type { MaybePromise } from '@theia/core/lib/common/types'; import type { MaybePromise } from '@theia/core/lib/common/types';

View File

@ -1,8 +1,6 @@
import { ClipboardService } from '@theia/core/lib/browser/clipboard-service'; import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
import { import { FrontendApplication } from '@theia/core/lib/browser/frontend-application';
FrontendApplication, import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
FrontendApplicationContribution,
} from '@theia/core/lib/browser/frontend-application';
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
import { import {
KeybindingContribution, KeybindingContribution,

View File

@ -1,78 +0,0 @@
import { MessageService } from '@theia/core';
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
import { inject, injectable } from '@theia/core/shared/inversify';
import { LocalStorageService } from '@theia/core/lib/browser';
import { nls } from '@theia/core/lib/common';
import { WindowService } from '@theia/core/lib/browser/window/window-service';
import { ArduinoPreferences } from '../arduino-preferences';
import { SurveyNotificationService } from '../../common/protocol/survey-service';
const SURVEY_MESSAGE = nls.localize(
'arduino/survey/surveyMessage',
'Please help us improve by answering this super short survey. We value our community and would like to get to know our supporters a little better.'
);
const DO_NOT_SHOW_AGAIN = nls.localize(
'arduino/survey/dismissSurvey',
"Don't show again"
);
const GO_TO_SURVEY = nls.localize(
'arduino/survey/answerSurvey',
'Answer survey'
);
const SURVEY_BASE_URL = 'https://surveys.hotjar.com/';
const surveyId = '17887b40-e1f0-4bd6-b9f0-a37f229ccd8b';
@injectable()
export class SurveyNotification implements FrontendApplicationContribution {
@inject(MessageService)
private readonly messageService: MessageService;
@inject(LocalStorageService)
private readonly localStorageService: LocalStorageService;
@inject(WindowService)
private readonly windowService: WindowService;
@inject(ArduinoPreferences)
private readonly arduinoPreferences: ArduinoPreferences;
@inject(SurveyNotificationService)
private readonly surveyNotificationService: SurveyNotificationService;
onStart(): void {
this.arduinoPreferences.ready.then(async () => {
if (
(await this.surveyNotificationService.isFirstInstance()) &&
this.arduinoPreferences.get('arduino.survey.notification')
) {
const surveyAnswered = await this.localStorageService.getData(
this.surveyKey(surveyId)
);
if (surveyAnswered !== undefined) {
return;
}
const answer = await this.messageService.info(
SURVEY_MESSAGE,
DO_NOT_SHOW_AGAIN,
GO_TO_SURVEY
);
switch (answer) {
case GO_TO_SURVEY:
this.windowService.openNewWindow(SURVEY_BASE_URL + surveyId, {
external: true,
});
this.localStorageService.setData(this.surveyKey(surveyId), true);
break;
case DO_NOT_SHOW_AGAIN:
this.localStorageService.setData(this.surveyKey(surveyId), false);
break;
}
}
});
}
private surveyKey(id: string): string {
return `answered_survey:${id}`;
}
}

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import { Emitter, Event } from '@theia/core/lib/common/event'; import { Emitter, Event } from '@theia/core/lib/common/event';
import URI from '@theia/core/lib/common/uri'; import URI from '@theia/core/lib/common/uri';

View File

@ -5,7 +5,7 @@ import {
Disposable, Disposable,
DisposableCollection, DisposableCollection,
} from '@theia/core/lib/common/disposable'; } from '@theia/core/lib/common/disposable';
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { import {
Stat, Stat,
FileType, FileType,

View File

@ -6,7 +6,7 @@ import {
import { Emitter } from '@theia/core/lib/common/event'; import { Emitter } from '@theia/core/lib/common/event';
import { JsonRpcProxy } from '@theia/core/lib/common/messaging/proxy-factory'; import { JsonRpcProxy } from '@theia/core/lib/common/messaging/proxy-factory';
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { import {
IndexUpdateDidCompleteParams, IndexUpdateDidCompleteParams,
IndexUpdateDidFailParams, IndexUpdateDidFailParams,

View File

@ -9,7 +9,7 @@ import {
Disposable, Disposable,
DisposableCollection, DisposableCollection,
} from '@theia/core/lib/common/disposable'; } from '@theia/core/lib/common/disposable';
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { Sketch, SketchesService } from '../common/protocol'; import { Sketch, SketchesService } from '../common/protocol';
import { ConfigServiceClient } from './config/config-service-client'; import { ConfigServiceClient } from './config/config-service-client';
import { import {
@ -74,6 +74,7 @@ export class SketchesServiceClientImpl
const sketchDirUri = this.configService.tryGetSketchDirUri(); const sketchDirUri = this.configService.tryGetSketchDirUri();
this.watchSketchbookDir(sketchDirUri); this.watchSketchbookDir(sketchDirUri);
const refreshCurrentSketch = async () => { const refreshCurrentSketch = async () => {
await this.workspaceService.ready;
const currentSketch = await this.loadCurrentSketch(); const currentSketch = await this.loadCurrentSketch();
const ideTempFolderUri = await this.getIdeTempFolderUriForSketch( const ideTempFolderUri = await this.getIdeTempFolderUriForSketch(
currentSketch currentSketch

View File

@ -2,7 +2,7 @@ import {
CommonCommands, CommonCommands,
CommonFrontendContribution as TheiaCommonFrontendContribution, CommonFrontendContribution as TheiaCommonFrontendContribution,
} from '@theia/core/lib/browser/common-frontend-contribution'; } from '@theia/core/lib/browser/common-frontend-contribution';
import type { OnWillStopAction } from '@theia/core/lib/browser/frontend-application'; import type { OnWillStopAction } from '@theia/core/lib/browser/frontend-application-contribution';
import type { KeybindingRegistry } from '@theia/core/lib/browser/keybinding'; import type { KeybindingRegistry } from '@theia/core/lib/browser/keybinding';
import type { CommandRegistry } from '@theia/core/lib/common/command'; import type { CommandRegistry } from '@theia/core/lib/common/command';
import type { MenuModelRegistry } from '@theia/core/lib/common/menu'; import type { MenuModelRegistry } from '@theia/core/lib/common/menu';

View File

@ -1,10 +1,10 @@
import { import {
ApplicationConnectionStatusContribution as TheiaApplicationConnectionStatusContribution,
ConnectionStatus, ConnectionStatus,
ApplicationConnectionStatusContribution as TheiaApplicationConnectionStatusContribution,
FrontendConnectionStatusService as TheiaFrontendConnectionStatusService, FrontendConnectionStatusService as TheiaFrontendConnectionStatusService,
} from '@theia/core/lib/browser/connection-status-service'; } from '@theia/core/lib/browser/connection-status-service';
import type { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import type { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { WebSocketConnectionProvider } from '@theia/core/lib/browser/index'; import { WebSocketConnectionSource } from '@theia/core/lib/browser/messaging/ws-connection-source';
import { StatusBarAlignment } from '@theia/core/lib/browser/status-bar/status-bar'; import { StatusBarAlignment } from '@theia/core/lib/browser/status-bar/status-bar';
import { Disposable } from '@theia/core/lib/common/disposable'; import { Disposable } from '@theia/core/lib/common/disposable';
import { Emitter, Event } from '@theia/core/lib/common/event'; import { Emitter, Event } from '@theia/core/lib/common/event';
@ -114,8 +114,8 @@ export class FrontendConnectionStatusService extends TheiaFrontendConnectionStat
private readonly daemonPort: DaemonPort; private readonly daemonPort: DaemonPort;
@inject(IsOnline) @inject(IsOnline)
private readonly isOnline: IsOnline; private readonly isOnline: IsOnline;
@inject(WebSocketConnectionProvider) @inject(WebSocketConnectionSource)
private readonly connectionProvider: WebSocketConnectionProvider; private readonly connectionSource: WebSocketConnectionSource;
@postConstruct() @postConstruct()
protected override init(): void { protected override init(): void {
@ -128,7 +128,7 @@ export class FrontendConnectionStatusService extends TheiaFrontendConnectionStat
} }
protected override async performPingRequest(): Promise<void> { protected override async performPingRequest(): Promise<void> {
if (!this.connectionProvider['socket'].connected) { if (!this.connectionSource['socket'].connected) {
this.updateStatus(false); this.updateStatus(false);
return; return;
} }
@ -171,8 +171,8 @@ export class ApplicationConnectionStatusContribution extends TheiaApplicationCon
private readonly notificationManager: NotificationManager; private readonly notificationManager: NotificationManager;
@inject(CreateFeatures) @inject(CreateFeatures)
private readonly createFeatures: CreateFeatures; private readonly createFeatures: CreateFeatures;
@inject(WebSocketConnectionProvider) @inject(WebSocketConnectionSource)
private readonly connectionProvider: WebSocketConnectionProvider; private readonly connectionSource: WebSocketConnectionSource;
private readonly offlineStatusDidChangeEmitter = new Emitter< private readonly offlineStatusDidChangeEmitter = new Emitter<
OfflineConnectionStatus | undefined OfflineConnectionStatus | undefined
@ -202,7 +202,7 @@ export class ApplicationConnectionStatusContribution extends TheiaApplicationCon
const params = <OfflineMessageParams>{ const params = <OfflineMessageParams>{
port: this.daemonPort.port, port: this.daemonPort.port,
online: this.isOnline.online, online: this.isOnline.online,
backendConnected: this.connectionProvider['socket'].connected, // https://github.com/arduino/arduino-ide/issues/2081 backendConnected: this.connectionSource['socket'].connected, // https://github.com/arduino/arduino-ide/issues/2081
}; };
this._offlineStatus = offlineConnectionStatusType(params); this._offlineStatus = offlineConnectionStatusType(params);
const { text, tooltip } = offlineMessage(params); const { text, tooltip } = offlineMessage(params);

View File

@ -20,12 +20,12 @@ export class DefaultDebugSessionFactory extends TheiaDefaultDebugSessionFactory
sessionId, sessionId,
() => () =>
new Promise<DebugChannel>((resolve) => new Promise<DebugChannel>((resolve) =>
this.connectionProvider.openChannel( this.connectionProvider.listen(
`${DebugAdapterPath}/${sessionId}`, `${DebugAdapterPath}/${sessionId}`,
(wsChannel) => { (_, wsChannel) => {
resolve(new ForwardingDebugChannel(wsChannel)); resolve(new ForwardingDebugChannel(wsChannel));
}, },
{ reconnecting: false } false
) )
), ),
this.getTraceOutputChannel() this.getTraceOutputChannel()

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { ThemeService } from '@theia/core/lib/browser/theming'; import { ThemeService } from '@theia/core/lib/browser/theming';
import { import {
Disposable, Disposable,

View File

@ -1,11 +1,9 @@
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import type { DisposableCollection } from '@theia/core/lib/common/disposable';
import { Emitter, Event } from '@theia/core/lib/common/event'; import { Emitter, Event } from '@theia/core/lib/common/event';
import { injectable, interfaces } from '@theia/core/shared/inversify'; import { injectable, interfaces } from '@theia/core/shared/inversify';
import { import { HostedPluginSupport as TheiaHostedPluginSupport } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin';
PluginContributions, import type { PluginContributions } from '@theia/plugin-ext/lib/hosted/common/hosted-plugin';
HostedPluginSupport as TheiaHostedPluginSupport, import type { HostedPluginSupport } from '../../hosted/hosted-plugin-support';
} from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin';
import { HostedPluginSupport } from '../../hosted/hosted-plugin-support';
@injectable() @injectable()
export class HostedPluginSupportImpl export class HostedPluginSupportImpl

View File

@ -0,0 +1,9 @@
import { TestViewContribution as TheiaTestViewContribution } from '@theia/test/lib/browser/view/test-view-contribution';
import { injectable } from 'inversify';
@injectable()
export class TestViewContribution extends TheiaTestViewContribution {
override async initializeLayout(): Promise<void> {
// NOOP
}
}

View File

@ -1,4 +1,4 @@
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { import {
OpenerOptions, OpenerOptions,
OpenHandler, OpenHandler,

View File

@ -3,7 +3,7 @@ import { CommandRegistry } from '@theia/core/lib/common/command';
import { MenuModelRegistry } from '@theia/core/lib/common/menu'; import { MenuModelRegistry } from '@theia/core/lib/common/menu';
import { PreferenceService } from '@theia/core/lib/browser/preferences/preference-service'; import { PreferenceService } from '@theia/core/lib/browser/preferences/preference-service';
import { AbstractViewContribution } from '@theia/core/lib/browser/shell/view-contribution'; import { AbstractViewContribution } from '@theia/core/lib/browser/shell/view-contribution';
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application'; import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
import { MainMenuManager } from '../../../common/main-menu-manager'; import { MainMenuManager } from '../../../common/main-menu-manager';
import { ArduinoPreferences } from '../../arduino-preferences'; import { ArduinoPreferences } from '../../arduino-preferences';
import { SketchbookWidget } from './sketchbook-widget'; import { SketchbookWidget } from './sketchbook-widget';

View File

@ -1,7 +0,0 @@
export const SurveyNotificationServicePath =
'/services/survey-notification-service';
export const SurveyNotificationService = Symbol('SurveyNotificationService');
export interface SurveyNotificationService {
isFirstInstance(): Promise<boolean>;
}

View File

@ -1,5 +1,8 @@
import { Deferred } from '@theia/core/lib/common/promise-util'; import { Deferred } from '@theia/core/lib/common/promise-util';
import type { NewWindowOptions } from '@theia/core/lib/common/window'; import type {
NewWindowOptions,
WindowSearchParams,
} from '@theia/core/lib/common/window';
import { ElectronWindowService as TheiaElectronWindowService } from '@theia/core/lib/electron-browser/window/electron-window-service'; import { ElectronWindowService as TheiaElectronWindowService } from '@theia/core/lib/electron-browser/window/electron-window-service';
import { injectable, postConstruct } from '@theia/core/shared/inversify'; import { injectable, postConstruct } from '@theia/core/shared/inversify';
import { WindowServiceExt } from '../../../browser/theia/core/window-service-ext'; import { WindowServiceExt } from '../../../browser/theia/core/window-service-ext';
@ -17,8 +20,12 @@ export class ElectronWindowService
@postConstruct() @postConstruct()
protected override init(): void { protected override init(): void {
// NOOP // Overridden to avoid calling the zoom level listener in super.
// IDE2 listens on the zoom level changes in `ArduinoFrontendContribution#onStart` // IDE2 listens on the zoom level changes in `ArduinoFrontendContribution#onStart`
window.electronTheiaCore.onAboutToClose(() => {
this.connectionCloseService.markForClose(this.frontendIdProvider.getId());
});
} }
async isFirstWindow(): Promise<boolean> { async isFirstWindow(): Promise<boolean> {
@ -38,11 +45,11 @@ export class ElectronWindowService
} }
// Overridden to support optional task owner params and make `tsc` happy. // Overridden to support optional task owner params and make `tsc` happy.
override reload(options?: StartupTasks): void { override reload(options?: StartupTasks | WindowSearchParams): void {
if (hasStartupTasks(options)) { if (hasStartupTasks(options)) {
window.electronArduino.requestReload(options); window.electronArduino.requestReload(options);
} else { } else {
window.electronTheiaCore.requestReload(); super.reload(options);
} }
} }

View File

@ -1,10 +1,10 @@
import { ConnectionHandler } from '@theia/core/lib/common/messaging/handler';
import { JsonRpcConnectionHandler } from '@theia/core/lib/common/messaging/proxy-factory'; import { JsonRpcConnectionHandler } from '@theia/core/lib/common/messaging/proxy-factory';
import { ElectronMainWindowService } from '@theia/core/lib/electron-common/electron-main-window-service'; import { ElectronMainWindowService } from '@theia/core/lib/electron-common/electron-main-window-service';
import { ElectronConnectionHandler } from '@theia/core/lib/electron-common/messaging/electron-connection-handler';
import { TheiaMainApi } from '@theia/core/lib/electron-main/electron-api-main'; import { TheiaMainApi } from '@theia/core/lib/electron-main/electron-api-main';
import { import {
ElectronMainApplication as TheiaElectronMainApplication,
ElectronMainApplicationContribution, ElectronMainApplicationContribution,
ElectronMainApplication as TheiaElectronMainApplication,
} from '@theia/core/lib/electron-main/electron-main-application'; } from '@theia/core/lib/electron-main/electron-main-application';
import { TheiaElectronWindow as DefaultTheiaElectronWindow } from '@theia/core/lib/electron-main/theia-electron-window'; import { TheiaElectronWindow as DefaultTheiaElectronWindow } from '@theia/core/lib/electron-main/theia-electron-window';
import { ContainerModule } from '@theia/core/shared/inversify'; import { ContainerModule } from '@theia/core/shared/inversify';
@ -33,7 +33,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
bind(IDEUpdaterImpl).toSelf().inSingletonScope(); bind(IDEUpdaterImpl).toSelf().inSingletonScope();
bind(IDEUpdater).toService(IDEUpdaterImpl); bind(IDEUpdater).toService(IDEUpdaterImpl);
bind(ElectronMainApplicationContribution).toService(IDEUpdater); bind(ElectronMainApplicationContribution).toService(IDEUpdater);
bind(ElectronConnectionHandler) bind(ConnectionHandler)
.toDynamicValue( .toDynamicValue(
(context) => (context) =>
new JsonRpcConnectionHandler<IDEUpdaterClient>( new JsonRpcConnectionHandler<IDEUpdaterClient>(

View File

@ -11,16 +11,16 @@ import {
Disposable, Disposable,
DisposableCollection, DisposableCollection,
} from '@theia/core/lib/common/disposable'; } from '@theia/core/lib/common/disposable';
import { FileUri } from '@theia/core/lib/common/file-uri';
import { isOSX } from '@theia/core/lib/common/os'; import { isOSX } from '@theia/core/lib/common/os';
import { Deferred } from '@theia/core/lib/common/promise-util'; import { Deferred } from '@theia/core/lib/common/promise-util';
import { isObject, MaybePromise, Mutable } from '@theia/core/lib/common/types'; import { isObject, MaybePromise, Mutable } from '@theia/core/lib/common/types';
import { ElectronSecurityToken } from '@theia/core/lib/electron-common/electron-token'; import { ElectronSecurityToken } from '@theia/core/lib/electron-common/electron-token';
import { import {
ElectronMainExecutionParams, ElectronMainCommandOptions,
ElectronMainApplication as TheiaElectronMainApplication, ElectronMainApplication as TheiaElectronMainApplication,
} from '@theia/core/lib/electron-main/electron-main-application'; } from '@theia/core/lib/electron-main/electron-main-application';
import type { TheiaBrowserWindowOptions } from '@theia/core/lib/electron-main/theia-electron-window'; import type { TheiaBrowserWindowOptions } from '@theia/core/lib/electron-main/theia-electron-window';
import { FileUri } from '@theia/core/lib/node/file-uri';
import { inject, injectable } from '@theia/core/shared/inversify'; import { inject, injectable } from '@theia/core/shared/inversify';
import { URI } from '@theia/core/shared/vscode-uri'; import { URI } from '@theia/core/shared/vscode-uri';
import { log as logToFile, setup as setupFileLog } from 'node-log-rotate'; import { log as logToFile, setup as setupFileLog } from 'node-log-rotate';
@ -28,6 +28,7 @@ import { fork } from 'node:child_process';
import { promises as fs, readFileSync, rm, rmSync } from 'node:fs'; import { promises as fs, readFileSync, rm, rmSync } from 'node:fs';
import type { AddressInfo } from 'node:net'; import type { AddressInfo } from 'node:net';
import { isAbsolute, join, resolve } from 'node:path'; import { isAbsolute, join, resolve } from 'node:path';
import type { Argv } from 'yargs';
import { Sketch } from '../../common/protocol'; import { Sketch } from '../../common/protocol';
import { import {
AppInfo, AppInfo,
@ -129,6 +130,11 @@ const APP_STARTED_WITH_CONTENT_TRACE =
typeof process !== 'undefined' && typeof process !== 'undefined' &&
process.argv.indexOf('--content-trace') !== -1; process.argv.indexOf('--content-trace') !== -1;
const createYargs: (
argv?: string[],
cwd?: string
) => Argv = require('yargs/yargs');
@injectable() @injectable()
export class ElectronMainApplication extends TheiaElectronMainApplication { export class ElectronMainApplication extends TheiaElectronMainApplication {
@inject(IsTempSketch) @inject(IsTempSketch)
@ -171,6 +177,26 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
private readonly scheduledDeletions: Disposable[] = []; private readonly scheduledDeletions: Disposable[] = [];
override async start(config: FrontendApplicationConfig): Promise<void> { override async start(config: FrontendApplicationConfig): Promise<void> {
createYargs(this.argv, process.cwd())
.command(
'$0 [file]',
false,
(cmd) =>
cmd
.option('electronUserData', {
type: 'string',
describe:
'The area where the electron main process puts its data',
})
.positional('file', { type: 'string' }),
async (args) => {
if (args.electronUserData) {
console.info(
`using electron user data area : '${args.electronUserData}'`
);
await fs.mkdir(args.electronUserData, { recursive: true });
app.setPath('userData', args.electronUserData);
}
// Explicitly set the app name to have better menu items on macOS. ("About", "Hide", and "Quit") // Explicitly set the app name to have better menu items on macOS. ("About", "Hide", and "Quit")
// See: https://github.com/electron-userland/electron-builder/issues/2468 // See: https://github.com/electron-userland/electron-builder/issues/2468
// Regression in Theia: https://github.com/eclipse-theia/theia/issues/8701 // Regression in Theia: https://github.com/eclipse-theia/theia/issues/8701
@ -178,23 +204,29 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
app.on('ready', () => app.setName(config.applicationName)); app.on('ready', () => app.setName(config.applicationName));
const cwd = process.cwd(); const cwd = process.cwd();
this.attachFileAssociations(cwd); this.attachFileAssociations(cwd);
this.useNativeWindowFrame = this.getTitleBarStyle(config) === 'native'; this.useNativeWindowFrame =
this._config = await updateFrontendApplicationConfigFromPackageJson(config); this.getTitleBarStyle(config) === 'native';
this._config = await updateFrontendApplicationConfigFromPackageJson(
config
);
this._appInfo = updateAppInfo(this._appInfo, this._config); this._appInfo = updateAppInfo(this._appInfo, this._config);
this.hookApplicationEvents(); this.hookApplicationEvents();
const [port] = await Promise.all([this.startBackend(), app.whenReady()]); this.showInitialWindow();
const port = await this.startBackend();
this.startContentTracing(); this.startContentTracing();
this._backendPort.resolve(port); this._backendPort.resolve(port);
await Promise.all([ await app.whenReady();
this.attachElectronSecurityToken(port), await this.attachElectronSecurityToken(port);
this.startContributions(), await this.startContributions();
]); this.handleMainCommand({
return this.launch({ file: args.file,
secondInstance: false,
argv: this.processArgv.getProcessArgvWithoutBin(process.argv),
cwd, cwd,
secondInstance: false,
}); });
} }
)
.parse();
}
private startContentTracing(): void { private startContentTracing(): void {
if (!APP_STARTED_WITH_CONTENT_TRACE) { if (!APP_STARTED_WITH_CONTENT_TRACE) {
@ -284,8 +316,8 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
} }
} }
protected override async launch( protected override async handleMainCommand(
params: ElectronMainExecutionParams options: ElectronMainCommandOptions
): Promise<void> { ): Promise<void> {
try { try {
// When running on MacOS, we either have to wait until // When running on MacOS, we either have to wait until
@ -300,7 +332,7 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
throw err; throw err;
} }
if (await this.launchFromArgs(params)) { if (await this.launchFromArgs(options)) {
// Application has received a file in its arguments and will skip the default application launch // Application has received a file in its arguments and will skip the default application launch
return; return;
} }
@ -314,7 +346,10 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
`Restoring workspace roots: ${workspaces.map(({ file }) => file)}` `Restoring workspace roots: ${workspaces.map(({ file }) => file)}`
); );
for (const workspace of workspaces) { for (const workspace of workspaces) {
const resolvedPath = await this.resolvePath(workspace.file, params.cwd); const resolvedPath = await this.resolvePath(
workspace.file,
options.cwd
);
if (!resolvedPath) { if (!resolvedPath) {
continue; continue;
} }
@ -337,15 +372,19 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
} }
this.startup = false; this.startup = false;
if (useDefault) { if (useDefault) {
super.launch(params); super.handleMainCommand(options);
} }
} }
private get argv(): string[] {
return this.processArgv.getProcessArgvWithoutBin(process.argv).slice();
}
private async launchFromArgs( private async launchFromArgs(
params: ElectronMainExecutionParams params: ElectronMainCommandOptions
): Promise<boolean> { ): Promise<boolean> {
// Copy to prevent manipulation of original array // Copy to prevent manipulation of original array
const argCopy = [...params.argv]; const argCopy = [...this.argv];
let path: string | undefined; let path: string | undefined;
for (const maybePath of argCopy) { for (const maybePath of argCopy) {
const resolvedPath = await this.resolvePath(maybePath, params.cwd); const resolvedPath = await this.resolvePath(maybePath, params.cwd);
@ -383,7 +422,7 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
} }
const [uri, electronWindow] = await Promise.all([ const [uri, electronWindow] = await Promise.all([
this.createWindowUri(), this.createWindowUri(),
this.createWindow(options), this.reuseOrCreateWindow(options),
]); ]);
electronWindow.loadURL(uri.withFragment(encodeURI(file)).toString(true)); electronWindow.loadURL(uri.withFragment(encodeURI(file)).toString(true));
return electronWindow; return electronWindow;
@ -483,7 +522,7 @@ export class ElectronMainApplication extends TheiaElectronMainApplication {
argv: string[], argv: string[],
cwd: string cwd: string
): Promise<void> { ): Promise<void> {
if (await this.launchFromArgs({ cwd, argv, secondInstance: true })) { if (await this.launchFromArgs({ cwd, secondInstance: true })) {
// Application has received a file in its arguments // Application has received a file in its arguments
return; return;
} }
@ -779,7 +818,7 @@ class InterruptWorkspaceRestoreError extends Error {
// but it's the `package.json` inside the `resources/app/` folder if it's the final bundled app. // but it's the `package.json` inside the `resources/app/` folder if it's the final bundled app.
// See https://github.com/arduino/arduino-ide/pull/2144#pullrequestreview-1556343430. // See https://github.com/arduino/arduino-ide/pull/2144#pullrequestreview-1556343430.
async function updateFrontendApplicationConfigFromPackageJson( async function updateFrontendApplicationConfigFromPackageJson(
config: FrontendApplicationConfig config: Mutable<FrontendApplicationConfig>
): Promise<FrontendApplicationConfig> { ): Promise<FrontendApplicationConfig> {
if (!isProductionMode) { if (!isProductionMode) {
console.debug( console.debug(
@ -846,7 +885,8 @@ const fallbackFrontendAppConfig: FrontendApplicationConfig = {
defaultIconTheme: 'none', defaultIconTheme: 'none',
validatePreferencesSchema: false, validatePreferencesSchema: false,
defaultLocale: '', defaultLocale: '',
electron: {}, electron: { showWindowEarly: true },
reloadOnReconnect: true,
}; };
// When the package.json must go from `./lib/backend/electron-main.js` to `./package.json` when the app is webpacked. // When the package.json must go from `./lib/backend/electron-main.js` to `./package.json` when the app is webpacked.

View File

@ -8,7 +8,7 @@ import { ElectronArduinoRenderer } from '../electron-arduino';
@injectable() @injectable()
export class TheiaElectronWindow extends DefaultTheiaElectronWindow { export class TheiaElectronWindow extends DefaultTheiaElectronWindow {
protected override reload(args?: unknown): void { protected override reload(args?: unknown): void {
this.handleStopRequest(() => { this.handleStopRequest(async () => {
this.applicationState = 'init'; this.applicationState = 'init';
if (hasStartupTasks(args)) { if (hasStartupTasks(args)) {
const { webContents } = this._window; const { webContents } = this._window;

View File

@ -1,7 +1,7 @@
import { join } from 'node:path'; import { join } from 'node:path';
import { inject, injectable, named } from '@theia/core/shared/inversify'; import { inject, injectable, named } from '@theia/core/shared/inversify';
import { spawn, ChildProcess } from 'node:child_process'; import { spawn, ChildProcess } from 'node:child_process';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { ILogger } from '@theia/core/lib/common/logger'; import { ILogger } from '@theia/core/lib/common/logger';
import { Deferred, retry } from '@theia/core/lib/common/promise-util'; import { Deferred, retry } from '@theia/core/lib/common/promise-util';
import { import {

View File

@ -105,14 +105,9 @@ import { ClangFormatter } from './clang-formatter';
import { FormatterPath } from '../common/protocol/formatter'; import { FormatterPath } from '../common/protocol/formatter';
import { HostedPluginLocalizationService } from './theia/plugin-ext/hosted-plugin-localization-service'; import { HostedPluginLocalizationService } from './theia/plugin-ext/hosted-plugin-localization-service';
import { HostedPluginLocalizationService as TheiaHostedPluginLocalizationService } from '@theia/plugin-ext/lib/hosted/node/hosted-plugin-localization-service'; import { HostedPluginLocalizationService as TheiaHostedPluginLocalizationService } from '@theia/plugin-ext/lib/hosted/node/hosted-plugin-localization-service';
import { SurveyNotificationServiceImpl } from './survey-service-impl';
import {
SurveyNotificationService,
SurveyNotificationServicePath,
} from '../common/protocol/survey-service';
import { IsTempSketch } from './is-temp-sketch'; import { IsTempSketch } from './is-temp-sketch';
import { rebindNsfwFileSystemWatcher } from './theia/filesystem/nsfw-bindings'; import { rebindNsfwFileSystemWatcher } from './theia/filesystem/nsfw-bindings';
import { MessagingContribution } from './theia/core/messaging-contribution'; import { WebsocketEndpoint } from './theia/core/websocket-endpoint';
import { MessagingService } from '@theia/core/lib/node/messaging/messaging-service'; import { MessagingService } from '@theia/core/lib/node/messaging/messaging-service';
import { HostedPluginReader } from './theia/plugin-ext/plugin-reader'; import { HostedPluginReader } from './theia/plugin-ext/plugin-reader';
import { HostedPluginReader as TheiaHostedPluginReader } from '@theia/plugin-ext/lib/hosted/node/plugin-reader'; import { HostedPluginReader as TheiaHostedPluginReader } from '@theia/plugin-ext/lib/hosted/node/plugin-reader';
@ -379,23 +374,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
HostedPluginLocalizationService HostedPluginLocalizationService
); );
// Survey notification bindings
// It's currently unused. https://github.com/arduino/arduino-ide/pull/1150
bind(SurveyNotificationServiceImpl).toSelf().inSingletonScope();
bind(SurveyNotificationService).toService(SurveyNotificationServiceImpl);
bind(ConnectionHandler)
.toDynamicValue(
({ container }) =>
new JsonRpcConnectionHandler(SurveyNotificationServicePath, () =>
container.get<SurveyNotificationService>(SurveyNotificationService)
)
)
.inSingletonScope();
bind(IsTempSketch).toSelf().inSingletonScope(); bind(IsTempSketch).toSelf().inSingletonScope();
rebind(MessagingService.Identifier) rebind(MessagingService.Identifier).to(WebsocketEndpoint).inSingletonScope();
.to(MessagingContribution)
.inSingletonScope();
// Removed undesired contributions from VS Code extensions // Removed undesired contributions from VS Code extensions
// Such as the RTOS view from the `cortex-debug` extension // Such as the RTOS view from the `cortex-debug` extension

View File

@ -1,6 +1,6 @@
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables'; import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
import { MaybePromise } from '@theia/core/lib/common/types'; import { MaybePromise } from '@theia/core/lib/common/types';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { inject, injectable } from '@theia/core/shared/inversify'; import { inject, injectable } from '@theia/core/shared/inversify';
import { constants, promises as fs } from 'node:fs'; import { constants, promises as fs } from 'node:fs';
import { join } from 'node:path'; import { join } from 'node:path';

View File

@ -1,6 +1,6 @@
import { notEmpty } from '@theia/core/lib/common/objects'; import { notEmpty } from '@theia/core/lib/common/objects';
import { nls } from '@theia/core/lib/common/nls'; import { nls } from '@theia/core/lib/common/nls';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { import {
Range, Range,
Position, Position,

View File

@ -4,7 +4,7 @@ import yaml from 'js-yaml';
import { injectable, inject, named } from '@theia/core/shared/inversify'; import { injectable, inject, named } from '@theia/core/shared/inversify';
import URI from '@theia/core/lib/common/uri'; import URI from '@theia/core/lib/common/uri';
import { ILogger } from '@theia/core/lib/common/logger'; import { ILogger } from '@theia/core/lib/common/logger';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { Event, Emitter } from '@theia/core/lib/common/event'; import { Event, Emitter } from '@theia/core/lib/common/event';
import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application'; import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application';
import { import {

View File

@ -6,13 +6,14 @@ import {
Disposable, Disposable,
DisposableCollection, DisposableCollection,
} from '@theia/core/lib/common/disposable'; } from '@theia/core/lib/common/disposable';
import { FileUri } from '@theia/core/lib/common/file-uri';
import { nls } from '@theia/core/lib/common/nls'; import { nls } from '@theia/core/lib/common/nls';
import type { Mutable } from '@theia/core/lib/common/types'; import type { Mutable } from '@theia/core/lib/common/types';
import { FileUri } from '@theia/core/lib/node/file-uri';
import { inject, injectable } from '@theia/core/shared/inversify'; import { inject, injectable } from '@theia/core/shared/inversify';
import * as jspb from 'google-protobuf'; import * as jspb from 'google-protobuf';
import { BoolValue } from 'google-protobuf/google/protobuf/wrappers_pb'; import { BoolValue } from 'google-protobuf/google/protobuf/wrappers_pb';
import path from 'node:path'; import path from 'node:path';
import { userAbort } from '../common/nls';
import { import {
UploadResponse as ApiUploadResponse, UploadResponse as ApiUploadResponse,
OutputMessage, OutputMessage,
@ -28,6 +29,7 @@ import {
isCompileSummary, isCompileSummary,
isUploadResponse, isUploadResponse,
} from '../common/protocol/core-service'; } from '../common/protocol/core-service';
import { UserAbortApplicationError } from '../common/protocol/progressible';
import { ResponseService } from '../common/protocol/response-service'; import { ResponseService } from '../common/protocol/response-service';
import { firstToUpperCase, notEmpty } from '../common/utils'; import { firstToUpperCase, notEmpty } from '../common/utils';
import { BoardDiscovery, createApiPort } from './board-discovery'; import { BoardDiscovery, createApiPort } from './board-discovery';
@ -52,8 +54,6 @@ import { ExecuteWithProgress, ProgressResponse } from './grpc-progressible';
import { MonitorManager } from './monitor-manager'; import { MonitorManager } from './monitor-manager';
import { ServiceError } from './service-error'; import { ServiceError } from './service-error';
import { AutoFlushingBuffer } from './utils/buffers'; import { AutoFlushingBuffer } from './utils/buffers';
import { userAbort } from '../common/nls';
import { UserAbortApplicationError } from '../common/protocol/progressible';
namespace Uploadable { namespace Uploadable {
export type Request = UploadRequest | UploadUsingProgrammerRequest; export type Request = UploadRequest | UploadUsingProgrammerRequest;

View File

@ -5,7 +5,7 @@ import {
} from '@theia/core/shared/inversify'; } from '@theia/core/shared/inversify';
import { join } from 'node:path'; import { join } from 'node:path';
import fs from 'node:fs'; import fs from 'node:fs';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { import {
SketchRef, SketchRef,
SketchContainer, SketchContainer,

View File

@ -1,4 +1,4 @@
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { injectable } from '@theia/core/shared/inversify'; import { injectable } from '@theia/core/shared/inversify';
import { ExecutableService } from '../common/protocol/executable-service'; import { ExecutableService } from '../common/protocol/executable-service';
import { import {

View File

@ -6,7 +6,7 @@ import {
postConstruct, postConstruct,
} from '@theia/core/shared/inversify'; } from '@theia/core/shared/inversify';
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables'; import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { promisify } from 'util'; import { promisify } from 'util';
import { MonitorSettingsProvider } from './monitor-settings-provider'; import { MonitorSettingsProvider } from './monitor-settings-provider';
import { Deferred } from '@theia/core/lib/common/promise-util'; import { Deferred } from '@theia/core/lib/common/promise-util';

View File

@ -1,5 +1,5 @@
import { injectable } from '@theia/core/shared/inversify'; import { injectable } from '@theia/core/shared/inversify';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { FileSystemExt } from '../common/protocol/filesystem-ext'; import { FileSystemExt } from '../common/protocol/filesystem-ext';
@injectable() @injectable()

View File

@ -1,5 +1,5 @@
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables'; import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { inject, injectable } from '@theia/core/shared/inversify'; import { inject, injectable } from '@theia/core/shared/inversify';
import { promises as fs } from 'node:fs'; import { promises as fs } from 'node:fs';
import { import {

View File

@ -6,7 +6,7 @@ import { Deferred } from '@theia/core/lib/common/promise-util';
import { escapeRegExpCharacters } from '@theia/core/lib/common/strings'; import { escapeRegExpCharacters } from '@theia/core/lib/common/strings';
import type { Mutable } from '@theia/core/lib/common/types'; import type { Mutable } from '@theia/core/lib/common/types';
import URI from '@theia/core/lib/common/uri'; import URI from '@theia/core/lib/common/uri';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { inject, injectable, named } from '@theia/core/shared/inversify'; import { inject, injectable, named } from '@theia/core/shared/inversify';
import glob from 'glob'; import glob from 'glob';
import crypto from 'node:crypto'; import crypto from 'node:crypto';

View File

@ -1,20 +0,0 @@
import { injectable } from '@theia/core/shared/inversify';
import { SurveyNotificationService } from '../common/protocol/survey-service';
/**
* Service for checking if it is the first instance of the IDE, in this case it sets a flag to true.
* This flag is used to prevent the survey notification from being visible in every open window. It must only be shown on one window.
*/
@injectable()
export class SurveyNotificationServiceImpl
implements SurveyNotificationService
{
private surveyDidShow = false;
async isFirstInstance(): Promise<boolean> {
if (this.surveyDidShow) {
return false;
}
this.surveyDidShow = true;
return this.surveyDidShow;
}
}

View File

@ -1,7 +1,8 @@
import { MessagingContribution as TheiaMessagingContribution } from '@theia/core/lib/node/messaging/messaging-contribution'; import { WebsocketEndpoint as TheiaWebsocketEndpoint } from '@theia/core/lib/node/messaging/websocket-endpoint';
import { injectable } from '@theia/core/shared/inversify'; import { injectable } from '@theia/core/shared/inversify';
@injectable() @injectable()
export class MessagingContribution extends TheiaMessagingContribution { export class WebsocketEndpoint extends TheiaWebsocketEndpoint {
// https://github.com/eclipse-theia/theia/discussions/11543 // https://github.com/eclipse-theia/theia/discussions/11543
protected override checkAliveTimeout = process.argv.includes( protected override checkAliveTimeout = process.argv.includes(
'--no-ping-timeout' '--no-ping-timeout'

View File

@ -5,7 +5,7 @@ import {
import { isWindows } from '@theia/core/lib/common/os'; import { isWindows } from '@theia/core/lib/common/os';
import URI from '@theia/core/lib/common/uri'; import URI from '@theia/core/lib/common/uri';
import { BackendApplicationConfigProvider } from '@theia/core/lib/node/backend-application-config-provider'; import { BackendApplicationConfigProvider } from '@theia/core/lib/node/backend-application-config-provider';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { import {
inject, inject,
injectable, injectable,

View File

@ -83,7 +83,9 @@ const cortexDebugMapper: PluginContributionMapper = (
} }
for (const _debugger of contribution.debuggers ?? []) { for (const _debugger of contribution.debuggers ?? []) {
if (_debugger.type === 'cortex-debug') { if (_debugger.type === 'cortex-debug') {
for (const attributes of _debugger.configurationAttributes ?? []) { for (const attributes of Object.values(
_debugger.configurationAttributes ?? {}
)) {
if (attributes.properties) { if (attributes.properties) {
// Patch the cortex-debug debug config schema to allow the in-house `configId`. // Patch the cortex-debug debug config schema to allow the in-house `configId`.
attributes.properties['configId'] = { attributes.properties['configId'] = {

View File

@ -2,7 +2,7 @@ import {
Disposable, Disposable,
DisposableCollection, DisposableCollection,
} from '@theia/core/lib/common/disposable'; } from '@theia/core/lib/common/disposable';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { expect } from 'chai'; import { expect } from 'chai';
import { promises as fs } from 'node:fs'; import { promises as fs } from 'node:fs';
import path from 'node:path'; import path from 'node:path';

View File

@ -1,6 +1,6 @@
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import type { MaybePromise } from '@theia/core/lib/common/types'; import type { MaybePromise } from '@theia/core/lib/common/types';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { Container } from '@theia/core/shared/inversify'; import { Container } from '@theia/core/shared/inversify';
import { expect } from 'chai'; import { expect } from 'chai';
import { dump, load } from 'js-yaml'; import { dump, load } from 'js-yaml';

View File

@ -2,7 +2,7 @@ import { CancellationTokenSource } from '@theia/core/lib/common/cancellation';
import { CommandRegistry } from '@theia/core/lib/common/command'; import { CommandRegistry } from '@theia/core/lib/common/command';
import { DisposableCollection } from '@theia/core/lib/common/disposable'; import { DisposableCollection } from '@theia/core/lib/common/disposable';
import { isWindows } from '@theia/core/lib/common/os'; import { isWindows } from '@theia/core/lib/common/os';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { Container, injectable } from '@theia/core/shared/inversify'; import { Container, injectable } from '@theia/core/shared/inversify';
import { expect } from 'chai'; import { expect } from 'chai';
import { import {

View File

@ -5,7 +5,7 @@ import {
import { EnvVariablesServer as TheiaEnvVariablesServer } from '@theia/core/lib/common/env-variables'; import { EnvVariablesServer as TheiaEnvVariablesServer } from '@theia/core/lib/common/env-variables';
import { waitForEvent } from '@theia/core/lib/common/promise-util'; import { waitForEvent } from '@theia/core/lib/common/promise-util';
import URI from '@theia/core/lib/common/uri'; import URI from '@theia/core/lib/common/uri';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import { ProcessUtils } from '@theia/core/lib/node/process-utils'; import { ProcessUtils } from '@theia/core/lib/node/process-utils';
import { import {
Container, Container,

View File

@ -2,9 +2,9 @@ import {
Disposable, Disposable,
DisposableCollection, DisposableCollection,
} from '@theia/core/lib/common/disposable'; } from '@theia/core/lib/common/disposable';
import { FileUri } from '@theia/core/lib/common/file-uri';
import { isWindows } from '@theia/core/lib/common/os'; import { isWindows } from '@theia/core/lib/common/os';
import { URI } from '@theia/core/lib/common/uri'; import { URI } from '@theia/core/lib/common/uri';
import { FileUri } from '@theia/core/lib/node/file-uri';
import { Container } from '@theia/core/shared/inversify'; import { Container } from '@theia/core/shared/inversify';
import { expect } from 'chai'; import { expect } from 'chai';
import { rejects } from 'node:assert/strict'; import { rejects } from 'node:assert/strict';

View File

@ -1,5 +1,5 @@
import type { Mutable } from '@theia/core/lib/common/types'; import type { Mutable } from '@theia/core/lib/common/types';
import { FileUri } from '@theia/core/lib/node/file-uri'; import { FileUri } from '@theia/core/lib/common/file-uri';
import stableJsonStringify from 'fast-json-stable-stringify'; import stableJsonStringify from 'fast-json-stable-stringify';
import assert from 'node:assert/strict'; import assert from 'node:assert/strict';
import { basename, join } from 'node:path'; import { basename, join } from 'node:path';

View File

@ -5,30 +5,30 @@
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"main": "./src-gen/backend/electron-main.js", "main": "./src-gen/backend/electron-main.js",
"dependencies": { "dependencies": {
"@theia/core": "1.41.0", "@theia/core": "1.46.1",
"@theia/debug": "1.41.0", "@theia/debug": "1.46.1",
"@theia/editor": "1.41.0", "@theia/editor": "1.46.1",
"@theia/electron": "1.41.0", "@theia/electron": "1.46.1",
"@theia/filesystem": "1.41.0", "@theia/filesystem": "1.46.1",
"@theia/keymaps": "1.41.0", "@theia/keymaps": "1.46.1",
"@theia/messages": "1.41.0", "@theia/messages": "1.46.1",
"@theia/monaco": "1.41.0", "@theia/monaco": "1.46.1",
"@theia/navigator": "1.41.0", "@theia/navigator": "1.46.1",
"@theia/plugin-ext": "1.41.0", "@theia/plugin-ext": "1.46.1",
"@theia/plugin-ext-vscode": "1.41.0", "@theia/plugin-ext-vscode": "1.46.1",
"@theia/preferences": "1.41.0", "@theia/preferences": "1.46.1",
"@theia/terminal": "1.41.0", "@theia/terminal": "1.46.1",
"@theia/workspace": "1.41.0", "@theia/workspace": "1.46.1",
"arduino-ide-extension": "2.3.3" "arduino-ide-extension": "2.3.3"
}, },
"devDependencies": { "devDependencies": {
"@theia/cli": "1.41.0", "@theia/cli": "1.46.1",
"7zip-min": "^1.4.4", "7zip-min": "^1.4.4",
"chmodr": "^1.2.0", "chmodr": "^1.2.0",
"compression-webpack-plugin": "^9.0.0", "compression-webpack-plugin": "^9.0.0",
"copy-webpack-plugin": "^8.1.1", "copy-webpack-plugin": "^8.1.1",
"dateformat": "^5.0.3", "dateformat": "^5.0.3",
"electron": "^27.0.3", "electron": "^27.3.1",
"electron-builder": "^24.6.4", "electron-builder": "^24.6.4",
"electron-notarize": "^1.1.1", "electron-notarize": "^1.1.1",
"execa": "^7.1.1", "execa": "^7.1.1",
@ -66,6 +66,10 @@
}, },
"defaultIconTheme": "none", "defaultIconTheme": "none",
"validatePreferencesSchema": false, "validatePreferencesSchema": false,
"electron": {
"showWindowEarly": true
},
"reloadOnReconnect": true,
"preferences": { "preferences": {
"window.title": "${rootName}${activeEditorShort}${appName}", "window.title": "${rootName}${activeEditorShort}${appName}",
"files.autoSave": "afterDelay", "files.autoSave": "afterDelay",
@ -194,29 +198,29 @@
}, },
"theiaPluginsDir": "plugins", "theiaPluginsDir": "plugins",
"theiaPlugins": { "theiaPlugins": {
"vscode-builtin-cpp": "https://open-vsx.org/api/vscode/cpp/1.52.1/file/vscode.cpp-1.52.1.vsix", "vscode-builtin-cpp": "https://open-vsx.org/api/vscode/cpp/1.83.1/file/vscode.cpp-1.83.1.vsix",
"vscode-arduino-api": "https://github.com/dankeboy36/vscode-arduino-api/releases/download/0.1.2/vscode-arduino-api-0.1.2.vsix", "vscode-arduino-api": "https://github.com/dankeboy36/vscode-arduino-api/releases/download/0.1.2/vscode-arduino-api-0.1.2.vsix",
"vscode-arduino-tools": "https://downloads.arduino.cc/vscode-arduino-tools/vscode-arduino-tools-0.1.3.vsix", "vscode-arduino-tools": "https://downloads.arduino.cc/vscode-arduino-tools/vscode-arduino-tools-0.1.3.vsix",
"vscode-builtin-json": "https://open-vsx.org/api/vscode/json/1.46.1/file/vscode.json-1.46.1.vsix", "vscode-builtin-json": "https://open-vsx.org/api/vscode/json/1.83.1/file/vscode.json-1.83.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", "vscode-builtin-json-language-features": "https://open-vsx.org/api/vscode/json-language-features/1.83.1/file/vscode.json-language-features-1.83.1.vsix",
"cortex-debug": "https://downloads.arduino.cc/marus25.cortex-debug/marus25.cortex-debug-1.5.1.vsix", "cortex-debug": "https://downloads.arduino.cc/marus25.cortex-debug/marus25.cortex-debug-1.5.1.vsix",
"vscode-language-pack-bg": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-bg/1.48.3/file/MS-CEINTL.vscode-language-pack-bg-1.48.3.vsix", "vscode-language-pack-bg": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-bg/1.48.3/file/MS-CEINTL.vscode-language-pack-bg-1.48.3.vsix",
"vscode-language-pack-cs": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-cs/1.80.0/file/MS-CEINTL.vscode-language-pack-cs-1.80.0.vsix", "vscode-language-pack-cs": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-cs/1.85.0/file/MS-CEINTL.vscode-language-pack-cs-1.85.0.vsix",
"vscode-language-pack-de": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-de/1.80.0/file/MS-CEINTL.vscode-language-pack-de-1.80.0.vsix", "vscode-language-pack-de": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-de/1.85.0/file/MS-CEINTL.vscode-language-pack-de-1.85.0.vsix",
"vscode-language-pack-es": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-es/1.80.0/file/MS-CEINTL.vscode-language-pack-es-1.80.0.vsix", "vscode-language-pack-es": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-es/1.85.0/file/MS-CEINTL.vscode-language-pack-es-1.85.0.vsix",
"vscode-language-pack-fr": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-fr/1.80.0/file/MS-CEINTL.vscode-language-pack-fr-1.80.0.vsix", "vscode-language-pack-fr": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-fr/1.85.0/file/MS-CEINTL.vscode-language-pack-fr-1.85.0.vsix",
"vscode-language-pack-hu": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-hu/1.48.3/file/MS-CEINTL.vscode-language-pack-hu-1.48.3.vsix", "vscode-language-pack-hu": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-hu/1.48.3/file/MS-CEINTL.vscode-language-pack-hu-1.48.3.vsix",
"vscode-language-pack-it": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-it/1.80.0/file/MS-CEINTL.vscode-language-pack-it-1.80.0.vsix", "vscode-language-pack-it": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-it/1.85.0/file/MS-CEINTL.vscode-language-pack-it-1.85.0.vsix",
"vscode-language-pack-ja": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-ja/1.80.0/file/MS-CEINTL.vscode-language-pack-ja-1.80.0.vsix", "vscode-language-pack-ja": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-ja/1.85.0/file/MS-CEINTL.vscode-language-pack-ja-1.85.0.vsix",
"vscode-language-pack-ko": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-ko/1.80.0/file/MS-CEINTL.vscode-language-pack-ko-1.80.0.vsix", "vscode-language-pack-ko": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-ko/1.85.0/file/MS-CEINTL.vscode-language-pack-ko-1.85.0.vsix",
"vscode-language-pack-nl": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-nl/1.48.3/file/MS-CEINTL.vscode-language-pack-nl-1.48.3.vsix", "vscode-language-pack-nl": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-nl/1.48.3/file/MS-CEINTL.vscode-language-pack-nl-1.48.3.vsix",
"vscode-language-pack-pl": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-pl/1.80.0/file/MS-CEINTL.vscode-language-pack-pl-1.80.0.vsix", "vscode-language-pack-pl": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-pl/1.85.0/file/MS-CEINTL.vscode-language-pack-pl-1.85.0.vsix",
"vscode-language-pack-pt-BR": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-pt-BR/1.80.0/file/MS-CEINTL.vscode-language-pack-pt-BR-1.80.0.vsix", "vscode-language-pack-pt-BR": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-pt-BR/1.85.0/file/MS-CEINTL.vscode-language-pack-pt-BR-1.85.0.vsix",
"vscode-language-pack-ru": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-ru/1.80.0/file/MS-CEINTL.vscode-language-pack-ru-1.80.0.vsix", "vscode-language-pack-ru": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-ru/1.85.0/file/MS-CEINTL.vscode-language-pack-ru-1.85.0.vsix",
"vscode-language-pack-tr": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-tr/1.80.0/file/MS-CEINTL.vscode-language-pack-tr-1.80.0.vsix", "vscode-language-pack-tr": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-tr/1.85.0/file/MS-CEINTL.vscode-language-pack-tr-1.85.0.vsix",
"vscode-language-pack-uk": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-uk/1.48.3/file/MS-CEINTL.vscode-language-pack-uk-1.48.3.vsix", "vscode-language-pack-uk": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-uk/1.48.3/file/MS-CEINTL.vscode-language-pack-uk-1.48.3.vsix",
"vscode-language-pack-zh-hans": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-zh-hans/1.80.0/file/MS-CEINTL.vscode-language-pack-zh-hans-1.80.0.vsix", "vscode-language-pack-zh-hans": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-zh-hans/1.85.0/file/MS-CEINTL.vscode-language-pack-zh-hans-1.85.0.vsix",
"vscode-language-pack-zh-hant": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-zh-hant/1.80.0/file/MS-CEINTL.vscode-language-pack-zh-hant-1.80.0.vsix" "vscode-language-pack-zh-hant": "https://open-vsx.org/api/MS-CEINTL/vscode-language-pack-zh-hant/1.85.0/file/MS-CEINTL.vscode-language-pack-zh-hant-1.85.0.vsix"
}, },
"mocha": { "mocha": {
"reporter": "spec", "reporter": "spec",

View File

@ -408,7 +408,6 @@
}, },
"sketchbook.location": "Sketchbook location", "sketchbook.location": "Sketchbook location",
"sketchbook.showAllFiles": "True to show all sketch files inside the sketch. It is false by default.", "sketchbook.showAllFiles": "True to show all sketch files inside the sketch. It is false by default.",
"survey.notification": "True if users should be notified if a survey is available. True by default.",
"unofficialBoardSupport": "Click for a list of unofficial board support URLs", "unofficialBoardSupport": "Click for a list of unofficial board support URLs",
"upload": "upload", "upload": "upload",
"upload.verbose": "True for verbose upload output. False by default.", "upload.verbose": "True for verbose upload output. False by default.",
@ -481,11 +480,6 @@
"newCloudSketch": "New Cloud Sketch", "newCloudSketch": "New Cloud Sketch",
"newSketch": "New Sketch" "newSketch": "New Sketch"
}, },
"survey": {
"answerSurvey": "Answer survey",
"dismissSurvey": "Don't show again",
"surveyMessage": "Please help us improve by answering this super short survey. We value our community and would like to get to know our supporters a little better."
},
"theme": { "theme": {
"currentThemeNotFound": "Could not find the currently selected theme: {0}. Arduino IDE has picked a built-in theme compatible with the missing one.", "currentThemeNotFound": "Could not find the currently selected theme: {0}. Arduino IDE has picked a built-in theme compatible with the missing one.",
"dark": "Dark", "dark": "Dark",

View File

@ -17,7 +17,7 @@
"**/ip": "^2.0.1" "**/ip": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@theia/cli": "1.41.0", "@theia/cli": "1.46.1",
"@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0", "@typescript-eslint/parser": "^5.59.0",
"@xhmikosr/downloader": "^13.0.1", "@xhmikosr/downloader": "^13.0.1",

3325
yarn.lock

File diff suppressed because it is too large Load Diff