react-magnetic-di
Version:
Context driven dependency injection
41 lines (33 loc) • 982 B
Flow
// @flow
/* eslint-disable no-redeclare, no-unused-vars */
import type { Node, AbstractComponent } from 'react';
export type Dependency = Function;
declare export class DiProvider extends React$Component<
{
children?: Node,
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;
/** @deprecated use injectable instead */
declare export function mock<T: Dependency>(original: T, mock: T): T;
declare export function injectable<T: Dependency>(
from: T,
implementation: T
): T;
function di(...dependencies: Dependency[]) {
/** @deprecated use injectable instead */
di.mock = mock;
}
declare export { di };