@joist/di
Version:
Dependency Injection for Vanilla JS classes
20 lines (19 loc) • 638 B
TypeScript
import type { Injector } from "./injector.js";
export type ProviderFactory<T> = (injector: Injector) => T;
export declare class StaticToken<T> {
#private;
[Symbol.metadata]: null;
get name(): string;
get factory(): ProviderFactory<T> | undefined;
constructor(name: string, factory?: ProviderFactory<T>);
}
export interface ConstructableToken<T> {
new (...args: any[]): T;
}
export type InjectionToken<T> = ConstructableToken<T> | StaticToken<T>;
export type ProviderDef<T> = {
use: ConstructableToken<T>;
} | {
factory: ProviderFactory<T>;
};
export type Provider<T> = [InjectionToken<T>, ProviderDef<T>];