inversify-binding-decorators
Version:
An utility that allows developers to declare InversifyJS bindings using ES2016 decorators
40 lines (39 loc) • 2.12 kB
TypeScript
import { interfaces as inversifyInterfaces } from "inversify";
declare namespace interfaces {
type BindConstraint = (bind: inversifyInterfaces.Bind, target: any) => any;
interface ProvideSyntax {
constraint: BindConstraint;
implementationType: any;
}
interface ProvideDoneSyntax {
done(force?: boolean): (target: any) => any;
}
interface ProvideInSyntax<T> extends ProvideDoneSyntax {
inSingletonScope(): ProvideWhenOnSyntax<T>;
inTransientScope(): ProvideWhenOnSyntax<T>;
}
interface ProvideInWhenOnSyntax<T> extends ProvideInSyntax<T>, ProvideWhenSyntax<T>, ProvideOnSyntax<T> {
}
interface ProvideOnSyntax<T> extends ProvideDoneSyntax {
onActivation(fn: (context: inversifyInterfaces.Context, injectable: T) => T): ProvideWhenSyntax<T>;
}
interface ProvideWhenSyntax<T> extends ProvideDoneSyntax {
when(constraint: (request: inversifyInterfaces.Request) => boolean): ProvideOnSyntax<T>;
whenTargetNamed(name: string): ProvideOnSyntax<T>;
whenTargetTagged(tag: string, value: any): ProvideOnSyntax<T>;
whenInjectedInto(parent: (Function | string)): ProvideOnSyntax<T>;
whenParentNamed(name: string): ProvideOnSyntax<T>;
whenParentTagged(tag: string, value: any): ProvideOnSyntax<T>;
whenAnyAncestorIs(ancestor: (Function | string)): ProvideOnSyntax<T>;
whenNoAncestorIs(ancestor: (Function | string)): ProvideOnSyntax<T>;
whenAnyAncestorNamed(name: string): ProvideOnSyntax<T>;
whenAnyAncestorTagged(tag: string, value: any): ProvideOnSyntax<T>;
whenNoAncestorNamed(name: string): ProvideOnSyntax<T>;
whenNoAncestorTagged(tag: string, value: any): ProvideOnSyntax<T>;
whenAnyAncestorMatches(constraint: (request: inversifyInterfaces.Request) => boolean): ProvideOnSyntax<T>;
whenNoAncestorMatches(constraint: (request: inversifyInterfaces.Request) => boolean): ProvideOnSyntax<T>;
}
interface ProvideWhenOnSyntax<T> extends ProvideWhenSyntax<T>, ProvideOnSyntax<T> {
}
}
export default interfaces;