Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update inversify to fix TypeScript 5.0 errors #12425

Merged
merged 11 commits into from
May 26, 2023
6 changes: 5 additions & 1 deletion packages/console/src/browser/console-widget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@ export class ConsoleWidget extends BaseWidget implements StatefulWidget {
}

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
const { id, title, inputFocusContextKey } = this.options;
const { label, iconClass, caption } = Object.assign({}, title);
this.id = id;
Expand Down
2 changes: 1 addition & 1 deletion packages/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ export class SomeClass {
- `@theia/request/lib/node-request-service` (from [`@theia/[email protected]`](https://www.npmjs.com/package/@theia/request/v/1.37.0))
- `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra))
- `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy))
- `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify))
- `inversify` (from [`inversify@^6.0.1`](https://www.npmjs.com/package/inversify))
- `react-dom` (from [`react-dom@^18.2.0`](https://www.npmjs.com/package/react-dom))
- `react-dom/client` (from [`react-dom@^18.2.0`](https://www.npmjs.com/package/react-dom))
- `react-virtuoso` (from [`react-virtuoso@^2.17.0`](https://www.npmjs.com/package/react-virtuoso))
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0",
"iconv-lite": "^0.6.0",
"inversify": "^5.1.1",
"inversify": "^6.0.1",
"jschardet": "^2.1.1",
"keytar": "7.2.0",
"lodash.debounce": "^4.0.8",
Expand Down
6 changes: 5 additions & 1 deletion packages/core/src/browser/about-dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,11 @@ export class AboutDialog extends ReactDialog<void> {
}

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.applicationInfo = await this.appServer.getApplicationInfo();
this.extensionsInfos = await this.appServer.getExtensionsInfos();
this.update();
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/browser/frontend-application-bindings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export function bindPreferenceService(bind: interfaces.Bind): void {
bind(PreferenceProxyFactory).toFactory(({ container }) => (schema: MaybePromise<PreferenceSchema>, options: PreferenceProxyOptions = {}) => {
const child = container.createChild();
child.bind(PreferenceProxyOptions).toConstantValue(options ?? {});
child.bind(PreferenceProxySchema).toConstantValue(schema);
child.bind(PreferenceProxySchema).toFactory(() => () => schema);
const handler = child.get(InjectablePreferenceProxy);
return new Proxy(Object.create(null), handler); // eslint-disable-line no-null/no-null
});
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/browser/frontend-application-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ import {
BreadcrumbsService,
DefaultBreadcrumbRenderer,
} from './breadcrumbs';
import { RendererHost } from './widgets';
import { DockPanel, RendererHost } from './widgets';
import { TooltipService, TooltipServiceImpl } from './tooltip-service';
import { BackendRequestService, RequestService, REQUEST_SERVICE_PATH } from '@theia/request';
import { bindFrontendStopwatch, bindBackendStopwatch } from './performance';
Expand Down Expand Up @@ -190,7 +190,7 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
const hoverService = container.get(HoverService);
return new TabBarRenderer(contextMenuRenderer, tabBarDecoratorService, iconThemeService, selectionService, commandService, corePreferences, hoverService);
});
bind(TheiaDockPanel.Factory).toFactory(({ container }) => options => {
bind(TheiaDockPanel.Factory).toFactory(({ container }) => (options?: DockPanel.IOptions) => {
const corePreferences = container.get<CorePreferences>(CorePreferences);
return new TheiaDockPanel(options, corePreferences);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ export class BrowserKeyboardLayoutProvider implements KeyboardLayoutProvider, Ke
}

@postConstruct()
protected async initialize(): Promise<void> {
protected initialize(): void {
this.doInit();
}
paul-marechal marked this conversation as resolved.
Show resolved Hide resolved

protected async doInit(): Promise<void> {
await this.loadState();
const keyboard = (navigator as NavigatorExtension).keyboard;
if (keyboard && keyboard.addEventListener) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export class InjectablePreferenceProxy<T extends Record<string, JSONValue>> impl

@inject(PreferenceProxyOptions) protected readonly options: PreferenceProxyOptions;
@inject(PreferenceService) protected readonly preferences: PreferenceService;
@inject(PreferenceProxySchema) protected readonly promisedSchema: PreferenceSchema | Promise<PreferenceSchema>;
@inject(PreferenceProxySchema) protected readonly promisedSchema: () => PreferenceSchema | Promise<PreferenceSchema>;
@inject(PreferenceProxyFactory) protected readonly factory: PreferenceProxyFactory;
protected toDispose = new DisposableCollection();
protected _onPreferenceChangedEmitter: Emitter<PreferenceChangeEvent<T>> | undefined;
Expand Down Expand Up @@ -95,10 +95,11 @@ export class InjectablePreferenceProxy<T extends Record<string, JSONValue>> impl

@postConstruct()
protected init(): void {
if (this.promisedSchema instanceof Promise) {
this.promisedSchema.then(schema => this.schema = schema);
const schema = this.promisedSchema();
if (schema instanceof Promise) {
schema.then(resolvedSchema => this.schema = resolvedSchema);
} else {
this.schema = this.promisedSchema;
this.schema = schema;
}
}

Expand Down
26 changes: 12 additions & 14 deletions packages/core/src/common/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
// *****************************************************************************

import { inject, injectable } from 'inversify';
import { inject, injectable, postConstruct } from 'inversify';
import { LoggerWatcher } from './logger-watcher';
import { ILoggerServer, LogLevel, ConsoleLogger, rootLoggerName } from './logger-protocol';

Expand Down Expand Up @@ -235,30 +235,28 @@ export class Logger implements ILogger {
/* A promise resolved when the logger has been created by the backend. */
protected created: Promise<void>;

/**
* Build a new Logger.
*/
constructor(
@inject(ILoggerServer) protected readonly server: ILoggerServer,
@inject(LoggerWatcher) protected readonly loggerWatcher: LoggerWatcher,
@inject(LoggerFactory) protected readonly factory: LoggerFactory,
@inject(LoggerName) protected name: string) {
@inject(ILoggerServer) protected readonly server: ILoggerServer;
@inject(LoggerWatcher) protected readonly loggerWatcher: LoggerWatcher;
@inject(LoggerFactory) protected readonly factory: LoggerFactory;
@inject(LoggerName) protected name: string;

if (name !== rootLoggerName) {
@postConstruct()
protected init(): void {
if (this.name !== rootLoggerName) {
/* Creating a child logger. */
this.created = server.child(name);
this.created = this.server.child(this.name);
} else {
/* Creating the root logger (it already exists at startup). */
this.created = Promise.resolve();
}

/* Fetch the log level so it's cached in the frontend. */
this._logLevel = this.created.then(_ => this.server.getLogLevel(name));
this._logLevel = this.created.then(_ => this.server.getLogLevel(this.name));

/* Update the log level if it changes in the backend. */
loggerWatcher.onLogLevelChanged(event => {
this.loggerWatcher.onLogLevelChanged(event => {
this.created.then(() => {
if (event.loggerName === name) {
if (event.loggerName === this.name) {
this._logLevel = Promise.resolve(event.newLogLevel);
}
});
Expand Down
4 changes: 4 additions & 0 deletions packages/core/src/common/messaging/proxy-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,10 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
if (p === 'onDidCloseConnection') {
return this.onDidCloseConnectionEmitter.event;
}
if (p === 'then') {
// Prevent inversify from identifying this proxy as a promise object.
return undefined;
}
const isNotify = this.isNotification(p);
return (...args: any[]) => {
const method = p.toString();
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/common/performance/stopwatch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export abstract class Stopwatch {
@inject(ILogger)
protected readonly logger: ILogger;

protected constructor(protected readonly defaultLogOptions: LogOptions) {
constructor(protected readonly defaultLogOptions: LogOptions) {
paul-marechal marked this conversation as resolved.
Show resolved Hide resolved
if (!defaultLogOptions.defaultLogLevel) {
defaultLogOptions.defaultLogLevel = DEFAULT_LOG_LEVEL;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,11 @@ export class ElectronContextMenuRenderer extends BrowserContextMenuRenderer {
}

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.useNativeStyle = await window.electronTheiaCore.getTitleBarStyleAtStartup() === 'native';
}

Expand Down
4 changes: 4 additions & 0 deletions packages/core/src/node/backend-application.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,10 @@ export class BackendApplication {
}

@postConstruct()
protected init(): void {
this.configure();
}

protected async configure(): Promise<void> {
// Do not await the initialization because contributions are expected to handle
// concurrent initialize/configure in undefined order if they provide both
Expand Down
6 changes: 5 additions & 1 deletion packages/debug/src/browser/debug-configuration-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,11 @@ export class DebugConfigurationManager {
protected recentDynamicOptionsTracker: DynamicDebugConfigurationSessionOptions[] = [];

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.debugConfigurationTypeKey = this.contextKeyService.createKey<string>('debugConfigurationType', undefined);
this.initialized = this.preferences.ready.then(() => {
this.preferences.onPreferenceChanged(e => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,11 @@ export class DebugBreakpointWidget implements Disposable {
}

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.toDispose.push(this.zone = new MonacoEditorZoneWidget(this.editor.getControl()));
this.zone.containerNode.classList.add('theia-debug-breakpoint-widget');

Expand Down
6 changes: 5 additions & 1 deletion packages/debug/src/browser/editor/debug-exception-widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ export class DebugExceptionWidget implements Disposable {
protected readonly toDispose = new DisposableCollection();

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.toDispose.push(this.zone = new DebugExceptionMonacoEditorZoneWidget(this.editor.getControl()));
this.zone.containerNode.classList.add('theia-debug-exception-widget');
this.containerNodeRoot = createRoot(this.zone.containerNode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,11 @@ export class LocationListRenderer extends ReactRenderer {
}

@postConstruct()
async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
const homeDirWithPrefix = await this.variablesServer.getHomeDirUri();
this.homeDir = (new URI(homeDirWithPrefix)).path.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,11 @@ export class GettingStartedWidget extends ReactWidget {
protected readonly workspaceService: WorkspaceService;

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.id = GettingStartedWidget.ID;
this.title.label = GettingStartedWidget.LABEL;
this.title.caption = GettingStartedWidget.LABEL;
Expand Down
6 changes: 5 additions & 1 deletion packages/git/src/browser/dirty-diff/dirty-diff-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,11 @@ export class DirtyDiffManager {
protected readonly preferences: GitPreferences;

@postConstruct()
protected async initialize(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.editorManager.onCreated(async e => this.handleEditorCreated(e));
this.repositoryTracker.onGitEvent(throttle(async (event: GitStatusChangeEvent | undefined) =>
this.handleGitStatusUpdate(event && event.source, event && event.status), 500));
Expand Down
10 changes: 5 additions & 5 deletions packages/git/src/browser/git-repository-provider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ describe('GitRepositoryProvider', () => {
(<sinon.SinonStub>mockFilesystem.exists).resolves(true);
(<sinon.SinonStub>mockGit.repositories).withArgs(folderA.resource.toString(), {}).resolves(allRepos);

await gitRepositoryProvider['initialize']();
await gitRepositoryProvider['doInit']();
expect(gitRepositoryProvider.allRepositories.length).to.eq(allRepos.length);
expect(gitRepositoryProvider.allRepositories[0].localUri).to.eq(allRepos[0].localUri);
expect(gitRepositoryProvider.allRepositories[1].localUri).to.eq(allRepos[1].localUri);
Expand Down Expand Up @@ -153,7 +153,7 @@ describe('GitRepositoryProvider', () => {
done();
}
});
gitRepositoryProvider['initialize']().then(() => {
gitRepositoryProvider['doInit']().then(() => {
const newRoots = [folderA, folderB];
stubWsRoots.returns(newRoots);
sinon.stub(mockWorkspaceService, 'roots').resolves(newRoots);
Expand Down Expand Up @@ -195,7 +195,7 @@ describe('GitRepositoryProvider', () => {
done();
}
});
gitRepositoryProvider['initialize']().then(() =>
gitRepositoryProvider['doInit']().then(() =>
mockFileChangeEmitter.fire(new FileChangesEvent([]))
).catch(e =>
done(new Error('gitRepositoryProvider.initialize() throws an error'))
Expand All @@ -215,7 +215,7 @@ describe('GitRepositoryProvider', () => {
(<sinon.SinonStub>mockFilesystem.exists).withArgs(folderB.resource.toString()).resolves(false); // folderB does not exist
(<sinon.SinonStub>mockGit.repositories).withArgs(folderA.resource.toString(), {}).resolves(allReposA);

await gitRepositoryProvider['initialize']();
await gitRepositoryProvider['doInit']();
expect(gitRepositoryProvider.allRepositories.length).to.eq(allReposA.length);
expect(gitRepositoryProvider.allRepositories[0].localUri).to.eq(allReposA[0].localUri);
expect(gitRepositoryProvider.allRepositories[1].localUri).to.eq(allReposA[1].localUri);
Expand All @@ -237,7 +237,7 @@ describe('GitRepositoryProvider', () => {
(<sinon.SinonStub>mockGit.repositories).withArgs(folderB.resource.toString(), {}).resolves(allReposB);
(<sinon.SinonStub>mockGit.repositories).withArgs(folderB.resource.toString(), { maxCount: 1 }).resolves([allReposB[0]]);

await gitRepositoryProvider['initialize']();
await gitRepositoryProvider['doInit']();
expect(gitRepositoryProvider.selectedRepository && gitRepositoryProvider.selectedRepository.localUri).to.eq(allReposA[0].localUri);
});
});
6 changes: 5 additions & 1 deletion packages/git/src/browser/git-repository-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ export class GitRepositoryProvider {
protected readonly fileService: FileService;

@postConstruct()
protected async initialize(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
const [selectedRepository, allRepositories] = await Promise.all([
this.storageService.getData<Repository | undefined>(this.selectedRepoStorageKey),
this.storageService.getData<Repository[]>(this.allRepoStorageKey)
Expand Down
6 changes: 5 additions & 1 deletion packages/git/src/browser/git-repository-tracker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,11 @@ export class GitRepositoryTracker {
) { }

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.updateStatus();
this.repositoryProvider.onDidChangeRepository(() => this.updateStatus());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ export class GitCommitDetailHeaderWidget extends ReactWidget {
}

@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
this.authorAvatar = await this.avatarService.getAvatar(this.commitDetailOptions.authorEmail);
}

Expand Down
6 changes: 5 additions & 1 deletion packages/git/src/node/git-exec-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ import { IGitExecutionOptions } from 'dugite-extra/lib/core/git';
* protected deferred = new Deferred<any>();
*
* @postConstruct()
* protected async init(): Promise<void> {
* protected init(): void {
* this.doInit();
* }
*
* protected async doInit(): Promise<void> {
* const connection = await new SSH().connect({
* host: 'your-host',
* username: 'your-username',
Expand Down
6 changes: 5 additions & 1 deletion packages/keymaps/src/browser/keymaps-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,11 @@ export class KeymapsService {
* Initialize the keybinding service.
*/
@postConstruct()
protected async init(): Promise<void> {
protected init(): void {
this.doInit();
}

protected async doInit(): Promise<void> {
const reference = await this.textModelService.createModelReference(UserStorageUri.resolve('keymaps.json'));
this.model = reference.object;
this.deferredModel.resolve(this.model);
Expand Down
Loading