@react-mvi/di
Version:
Dependency injection module for React MVI.
130 lines (129 loc) • 3 kB
TypeScript
/**
* @fileoverview バインディングの定義
* @author Taketoshi Aono
*/
import { ClassType } from './classtype';
import { MethodProxy } from './method-proxy';
/**
* バインディングの定義
*/
export interface Binding {
/**
* 設定された値
*/
val: any;
/**
* シングルトンかどうか
*/
singleton: boolean;
/**
* インスタンスを前もって作成するかどうか
*/
eagerSingleton: boolean;
/**
* 即値かどうか
*/
instance: boolean;
/**
* providerの設定
*/
provider: boolean;
/**
* templateの設定
*/
template: boolean;
}
/**
* バインディング名から設定を引くための辞書
*/
export interface BindingRelation {
[index: string]: Binding;
}
/**
* プロバイダのインターフェース
*/
export interface Provider<T> {
/**
* インスタンスを作成する
*/
provide(): T;
}
/**
* クラス型の追加設定
*/
export declare class ClassTypeOption {
private binding;
constructor(binding: Binding);
/**
* シングルトンにする
*/
asSingleton(): void;
/**
* シングルトンにする
*/
asEagerSingleton(): void;
}
/**
* バインディングと値をひもづける
*/
export declare class BindingPlaceholder {
private id;
private holder;
/**
* @param id 名前
* @param holder バインディングのmap
*/
constructor(id: string, holder: BindingRelation);
/**
* クラスコンストラクタをIdと紐つける
* @param ctor コンストラクタ関数
* @returns 追加の設定クラス
*/
to<T>(ctor: any): any;
/**
* インスタンスとIdを紐つける
* @param value 即値
*/
toInstance<T>(value: T): void;
/**
* プロバイダとIdを紐つける
* @param value プロバイダのコンストラクタ
*/
toProvider<T>(value: ClassType<Provider<T>>): void;
}
/**
* インターセプタと値を保持するクラス
*/
export declare class InterceptPlaceholder {
private targetSymbol;
/**
* インターセプタ
*/
private interceptor;
/**
* @param targetSymbol インターセプトするターゲットに設定されるsymbol
*/
constructor(targetSymbol: symbol);
/**
* バインドを行う
* @param methodProxyCtor MethodProxyのコンストラクタ
*/
to(methodProxyCtor: new () => MethodProxy): void;
}
/**
* テンプレート定義と値を保持するクラス
*/
export declare class TemplatePlaceholder {
private id;
private holder;
/**
* @param id templateのid
* @param holder バインディングを保持するオブジェクト
*/
constructor(id: string, holder: BindingRelation);
/**
* 値を紐つける
* @param ctor コンストラクタ
*/
to<T>(ctor: ClassType<T>): void;
}