UNPKG

@joist/di

Version:

Dependency Injection for Vanilla JS classes

20 lines (19 loc) 638 B
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>];