Refactor Dependency Injection classes to use named imports for Type and interfaces. Change export statements from default to named exports for DependencyManager, DependencyProvider, IDependencyManager, IDependencyProvider, and NamedType classes.

This commit is contained in:
2025-10-25 17:39:27 -04:00
parent e73c6e75e9
commit 0de4b9314a
7 changed files with 24 additions and 16 deletions

View File

@@ -1,13 +1,13 @@
import type IDependencyProvider from './IDependencyProvider';
import type {IDependencyProvider} from './IDependencyProvider';
import type IDisposable from '../lang/IDisposable';
import Disposable from '../lang/Disposable';
import Type from './Type';
import type IDependencyManager from './IDependencyManager';
import {Type} from './Type';
import type {IDependencyManager} from './IDependencyManager';
type Constructor<T = unknown> = new (...args: unknown[]) => T;
type ModuleLoader = (modulePath: string) => Promise<Constructor | {default: Constructor}>;
export default class DependencyManager implements IDependencyManager {
export class DependencyManager implements IDependencyManager {
private readonly _moduleLoader: ModuleLoader;
private readonly _types: Type[];
private readonly _eagerTypes: Type[];

View File

@@ -1,8 +1,8 @@
import type IDependencyProvider from './IDependencyProvider';
import type {IDependencyProvider} from './IDependencyProvider';
import type {Milliseconds} from '../types/Units';
import type IDependencyManager from './IDependencyManager';
import type {IDependencyManager} from './IDependencyManager';
import {Lifecycle} from './Lifecycle';
import Type from './Type';
import {Type} from './Type';
interface IStartable {
start(): Promise<void> | void;
@@ -14,7 +14,7 @@ function isStartable(obj: unknown): obj is IStartable {
return obj !== null && typeof obj === 'object' && 'start' in obj && typeof (obj as IStartable).start === 'function';
}
export default class DependencyProvider implements IDependencyProvider {
export class DependencyProvider implements IDependencyProvider {
private readonly _dependencyManager: IDependencyManager;
private readonly _type: Type;
private readonly _instanceType: Type;

View File

@@ -1,8 +1,8 @@
import type Type from './Type';
import type {Type} from './Type';
import type IDisposable from '../lang/IDisposable';
import type IDependencyProvider from './IDependencyProvider';
import type {IDependencyProvider} from './IDependencyProvider';
export default interface IDependencyManager {
export interface IDependencyManager {
defineDependencies(type: Type, dependencies: Type[]): IDisposable;
getDependencies(type: Type): Type[] | undefined;
addProvider(provider: IDependencyProvider): IDisposable;

View File

@@ -1,6 +1,6 @@
import Type from './Type';
import {Type} from './Type';
export default interface IDependencyProvider {
export interface IDependencyProvider {
canProvide(type: Type): boolean;
provide(type: Type): Promise<unknown>;
toString(): string;

View File

@@ -1,6 +1,6 @@
import Type from './Type';
import {Type} from './Type';
export default class NamedType extends Type {
export class NamedType extends Type {
private readonly _name: string;
constructor(name: string, type: string) {

View File

@@ -1,4 +1,4 @@
export default class Type {
export class Type {
private _type: string;
constructor(type: string) {

8
src/index.ts Normal file
View File

@@ -0,0 +1,8 @@
export type {IDependencyProvider} from './di/IDependencyProvider';
export type {IDependencyManager} from './di/IDependencyManager';
export type {default as IDisposable} from './lang/IDisposable';
export type {LifecycleType} from './di/Lifecycle';
export {Type} from './di/Type';
export {NamedType} from './di/NamedType';
export {DependencyManager} from './di/DependencyManager';
export {DependencyProvider} from './di/DependencyProvider';