containor
Version:
Simple DI container for Javascript with Typescript support
34 lines (33 loc) • 1.51 kB
TypeScript
import { Creator, ProviderCallback, Module, Creates, Arguments } from "./types";
import { Token } from "./token";
declare class Container {
private dependencies;
private providers;
private requests;
constructor();
add<T extends Creator>(token: Token<Creates<T>>, creator: T, args?: Arguments<T>): void;
addAsync<T extends Creator>(token: Token<Creates<T>>, asyncCreator: Promise<T>, args?: Arguments<T>): Promise<void>;
share<T extends Creator>(token: Token<Creates<T>>, creator: T, args?: Arguments<T>): void;
shareAsync<T extends Creator>(token: Token<Creates<T>>, asyncCreator: Promise<T>, args?: Arguments<T>): Promise<void>;
constant<T>(token: Token<T>, value: T): void;
constantAsync<T>(token: Token<T>, asyncValue: Promise<T>): Promise<void>;
private register;
private registerAsync;
get<T>(token: Token<T>): T;
getAsync<T>(token: Token<T>): Promise<T>;
provide(tokens: Token[], provider: ProviderCallback): void;
provideAsync(tokens: Token[], asyncProvider: Promise<ProviderCallback>): void;
use(module: Creator<Module>): void;
useAsync(asyncModule: Promise<Creator<Module>>): void;
private instantiate;
private instantiateAsync;
private create;
private createAsync;
private createSingle;
private createSingleAsync;
private resolve;
private resolveAsync;
private construct;
}
declare function createContainer(): Container;
export { Container, createContainer };