diff --git a/.eslintignore b/.eslintignore index f9da78e6f52e..74e1c18f596a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -927,10 +927,7 @@ src/client/logging/util.ts src/client/logging/index.ts src/client/logging/formatters.ts src/client/logging/trace.ts -src/client/ioc/serviceManager.ts -src/client/ioc/container.ts -src/client/ioc/types.ts -src/client/ioc/index.ts + src/client/refactor/proxy.ts src/client/workspaceSymbols/main.ts src/client/workspaceSymbols/contracts.ts diff --git a/src/client/ioc/container.ts b/src/client/ioc/container.ts index e689aa5cc925..f2dbe77eee79 100644 --- a/src/client/ioc/container.ts +++ b/src/client/ioc/container.ts @@ -19,9 +19,11 @@ try { @injectable() export class ServiceContainer implements IServiceContainer { constructor(private container: Container) {} + public get(serviceIdentifier: interfaces.ServiceIdentifier, name?: string | number | symbol): T { return name ? this.container.getNamed(serviceIdentifier, name) : this.container.get(serviceIdentifier); } + public getAll( serviceIdentifier: string | symbol | Newable | Abstract, name?: string | number | symbol | undefined, @@ -30,6 +32,7 @@ export class ServiceContainer implements IServiceContainer { ? this.container.getAllNamed(serviceIdentifier, name) : this.container.getAll(serviceIdentifier); } + public tryGet( serviceIdentifier: interfaces.ServiceIdentifier, name?: string | number | symbol | undefined, @@ -41,5 +44,7 @@ export class ServiceContainer implements IServiceContainer { } catch { // This might happen after the container has been destroyed } + + return undefined; } } diff --git a/src/client/ioc/index.ts b/src/client/ioc/index.ts index 0ee4070d5ded..0374a2d88371 100644 --- a/src/client/ioc/index.ts +++ b/src/client/ioc/index.ts @@ -4,9 +4,9 @@ import { IServiceContainer } from './types'; let container: IServiceContainer; -export function getServiceContainer() { +export function getServiceContainer(): IServiceContainer { return container; } -export function setServiceContainer(serviceContainer: IServiceContainer) { +export function setServiceContainer(serviceContainer: IServiceContainer): void { container = serviceContainer; } diff --git a/src/client/ioc/serviceManager.ts b/src/client/ioc/serviceManager.ts index 64a34d216096..a575b25e8c3f 100644 --- a/src/client/ioc/serviceManager.ts +++ b/src/client/ioc/serviceManager.ts @@ -9,9 +9,11 @@ type identifier = string | symbol | Newable | Abstract; @injectable() export class ServiceManager implements IServiceManager { constructor(private container: Container) {} + public add( serviceIdentifier: identifier, + // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor: new (...args: any[]) => T, name?: string | number | symbol | undefined, bindings?: symbol[], @@ -28,6 +30,7 @@ export class ServiceManager implements IServiceManager { }); } } + public addFactory( factoryIdentifier: interfaces.ServiceIdentifier>, factoryMethod: interfaces.FactoryCreator, @@ -42,6 +45,7 @@ export class ServiceManager implements IServiceManager { public addSingleton( serviceIdentifier: identifier, + // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor: new (...args: any[]) => T, name?: string | number | symbol | undefined, bindings?: symbol[], @@ -70,9 +74,11 @@ export class ServiceManager implements IServiceManager { this.container.bind(serviceIdentifier).toConstantValue(instance); } } + public get(serviceIdentifier: identifier, name?: string | number | symbol | undefined): T { return name ? this.container.getNamed(serviceIdentifier, name) : this.container.get(serviceIdentifier); } + public tryGet(serviceIdentifier: identifier, name?: string | number | symbol | undefined): T | undefined { try { return name @@ -81,7 +87,10 @@ export class ServiceManager implements IServiceManager { } catch { // This might happen after the container has been destroyed } + + return undefined; } + public getAll(serviceIdentifier: identifier, name?: string | number | symbol | undefined): T[] { return name ? this.container.getAllNamed(serviceIdentifier, name) @@ -124,7 +133,7 @@ export class ServiceManager implements IServiceManager { } } - public dispose() { + public dispose(): void { this.container.unbindAll(); this.container.unload(); } diff --git a/src/client/ioc/types.ts b/src/client/ioc/types.ts index 4d34df85e6be..0a18e44824ed 100644 --- a/src/client/ioc/types.ts +++ b/src/client/ioc/types.ts @@ -4,22 +4,19 @@ import { interfaces } from 'inversify'; import { IDisposable } from '../common/types'; -//tslint:disable:callable-types - export interface Newable { + // eslint-disable-next-line @typescript-eslint/no-explicit-any new (...args: any[]): T; } -//tslint:enable:callable-types export interface Abstract { prototype: T; } -//tslint:disable:callable-types export type ClassType = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any new (...args: any[]): T; }; -//tslint:enable:callable-types export const IServiceManager = Symbol('IServiceManager');