UNPKG

react-magnetic-di

Version:
60 lines (49 loc) 1.44 kB
// @flow /* eslint-disable no-redeclare, no-unused-vars */ import type { Node, AbstractComponent } from 'react'; export type Dependency = any; declare export class DiProvider extends React$Component< { children?: Node, global?: boolean, target?: AbstractComponent<any> | AbstractComponent<any>[], use: Dependency[], }, { getDependencies: ( deps: Dependency[], target: AbstractComponent<any> | AbstractComponent<any>[] ) => Dependency[], }, > {} declare export function withDi<T: AbstractComponent<any>>( component: T, dependencies: Dependency[], target?: AbstractComponent<any> | AbstractComponent<any>[] ): T; declare export function injectable<T: Dependency>( from: T, implementation: T, options?: {| displayName?: string, target?: Function, global?: boolean, track?: boolean, module?: boolean, |} ): T; type ExtractReturn<Fn> = $Call<<T>((...Iterable<any>) => T) => T, Fn>; declare export function runWithDi<T: (...args: any) => any>( thunk: T, dependencies: Dependency[] ): ExtractReturn<T>; declare export var stats: { /** Returns unused injectables */ unused: () => Array<{ get: () => Dependency, error: () => Error }>, /** Resets stats */ reset: () => void, }; declare export function di(...dependencies: Dependency[]): void; declare export function debug(fn: Function): string;