index.d.ts 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. // Generated by typings
  2. // Source: node_modules/inversify-dts/inversify/inversify.d.ts
  3. // Type definitions for inversify 2.0.0-beta.8
  4. // Project: https://github.com/inversify/InversifyJS
  5. // Definitions by: inversify <https://github.com/inversify>
  6. // Definitions: https://github.com/borisyankov/DefinitelyTyped
  7. interface Symbol {
  8. toString(): string;
  9. valueOf(): Object;
  10. }
  11. interface SymbolConstructor {
  12. (description?: string|number): Symbol;
  13. }
  14. declare var Symbol: SymbolConstructor;
  15. declare namespace inversify {
  16. export interface IKernelConstructor {
  17. new(): IKernel;
  18. }
  19. export interface PlanAndResolve<T> {
  20. (args: PlanAndResolveArgs): T[];
  21. }
  22. export interface IMiddleware extends Function {
  23. (next: PlanAndResolve<any>): PlanAndResolve<any>;
  24. }
  25. export interface PlanAndResolveArgs {
  26. multiInject: boolean;
  27. serviceIdentifier: (string|Symbol|INewable<any>);
  28. target: ITarget;
  29. contextInterceptor: (contexts: IContext) => IContext;
  30. }
  31. export interface IKernel {
  32. bind<T>(serviceIdentifier: (string|Symbol|INewable<T>)): IBindingToSyntax<T>;
  33. unbind(serviceIdentifier: (string|Symbol|any)): void;
  34. unbindAll(): void;
  35. get<T>(serviceIdentifier: (string|Symbol|INewable<T>)): T;
  36. getNamed<T>(serviceIdentifier: (string|Symbol|INewable<T>), named: string): T;
  37. getTagged<T>(serviceIdentifier: (string|Symbol|INewable<T>), key: string, value: any): T;
  38. getAll<T>(serviceIdentifier: (string|Symbol|INewable<T>)): T[];
  39. load(...modules: IKernelModule[]): void;
  40. applyMiddleware(...middleware: IMiddleware[]): void;
  41. getServiceIdentifierAsString(serviceIdentifier: (string|Symbol|INewable<any>)): string;
  42. snapshot(): void;
  43. restore(): void;
  44. }
  45. export interface IKernelModule extends Function {
  46. (kernel: IKernel): void;
  47. }
  48. interface IBindingOnSyntax<T> {
  49. onActivation(fn: (context: IContext, injectable: T) => T): IBindingWhenSyntax<T>;
  50. }
  51. interface IBindingInSyntax<T> {
  52. inSingletonScope(): IBindingWhenOnSyntax<T>;
  53. }
  54. interface IBindingWhenSyntax<T> {
  55. when(constraint: (request: IRequest) => boolean): IBindingOnSyntax<T>;
  56. whenTargetNamed(name: string): IBindingOnSyntax<T>;
  57. whenTargetTagged(tag: string, value: any): IBindingOnSyntax<T>;
  58. whenInjectedInto(parent: (Function|string)): IBindingOnSyntax<T>;
  59. whenParentNamed(name: string): IBindingOnSyntax<T>;
  60. whenParentTagged(tag: string, value: any): IBindingOnSyntax<T>;
  61. whenAnyAncestorIs(ancestor: (Function|string)): IBindingOnSyntax<T>;
  62. whenNoAncestorIs(ancestor: (Function|string)): IBindingOnSyntax<T>;
  63. whenAnyAncestorNamed(name: string): IBindingOnSyntax<T>;
  64. whenAnyAncestorTagged(tag: string, value: any): IBindingOnSyntax<T>;
  65. whenNoAncestorNamed(name: string): IBindingOnSyntax<T>;
  66. whenNoAncestorTagged(tag: string, value: any): IBindingOnSyntax<T>;
  67. whenAnyAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax<T>;
  68. whenNoAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax<T>;
  69. }
  70. interface IBindingToSyntax<T> {
  71. to(constructor: { new(...args: any[]): T; }): IBindingInWhenOnSyntax<T>;
  72. toConstantValue(value: T): IBindingWhenOnSyntax<T>;
  73. toDynamicValue(func: () => T): IBindingWhenOnSyntax<T>;
  74. toConstructor<T2>(constructor: INewable<T2>): IBindingWhenOnSyntax<T>;
  75. toFactory<T2>(factory: IFactoryCreator<T2>): IBindingWhenOnSyntax<T>;
  76. toAutoFactory<T2>(serviceIdentifier: (string|Symbol|T2)): IBindingWhenOnSyntax<T>;
  77. toProvider<T2>(provider: IProviderCreator<T2>): IBindingWhenOnSyntax<T>;
  78. }
  79. interface IBindingInWhenOnSyntax<T> extends IBindingInSyntax<T>, IBindingWhenOnSyntax<T> {}
  80. interface IBindingWhenOnSyntax<T> extends IBindingWhenSyntax<T>, IBindingOnSyntax<T> {}
  81. export interface IFactory<T> extends Function {
  82. (...args: any[]): (((...args: any[]) => T)|T);
  83. }
  84. interface IFactoryCreator<T> extends Function {
  85. (context: IContext): IFactory<T>;
  86. }
  87. export interface INewable<T> {
  88. new(...args: any[]): T;
  89. }
  90. export interface IProvider<T> extends Function {
  91. (): Promise<T>;
  92. }
  93. interface IProviderCreator<T> extends Function {
  94. (context: IContext): IProvider<T>;
  95. }
  96. export interface IContext {
  97. kernel: IKernel;
  98. plan: IPlan;
  99. addPlan(plan: IPlan): void;
  100. }
  101. export interface IPlan {
  102. parentContext: IContext;
  103. rootRequest: IRequest;
  104. }
  105. export interface IRequest {
  106. serviceIdentifier: (string|Symbol|INewable<any>);
  107. parentContext: IContext;
  108. parentRequest: IRequest;
  109. childRequests: IRequest[];
  110. target: ITarget;
  111. bindings: IBinding<any>[];
  112. addChildRequest(
  113. serviceIdentifier: (string|Symbol|INewable<any>),
  114. bindings: (IBinding<any>|IBinding<any>[]),
  115. target: ITarget): IRequest;
  116. }
  117. export interface IBinding<T> {
  118. activated: boolean;
  119. serviceIdentifier: (string|Symbol|INewable<T>);
  120. implementationType: INewable<T>;
  121. factory: IFactoryCreator<any>;
  122. provider: IProviderCreator<any>;
  123. constraint: (request: IRequest) => boolean;
  124. onActivation: (context: IContext, injectable: T) => T;
  125. cache: T;
  126. dynamicValue: () => T;
  127. scope: number; // BindingScope
  128. type: number; // BindingType
  129. }
  130. export interface ITarget {
  131. serviceIdentifier: (string|Symbol|INewable<any>);
  132. name: IQueryableString;
  133. metadata: Array<IMetadata>;
  134. hasTag(key: string): boolean;
  135. isArray(): boolean;
  136. matchesArray(name: string|Symbol|any): boolean;
  137. isNamed(): boolean;
  138. isTagged(): boolean;
  139. matchesNamedTag(name: string): boolean;
  140. matchesTag(key: string): (value: any) => boolean;
  141. }
  142. export interface IQueryableString {
  143. startsWith(searchString: string): boolean;
  144. endsWith(searchString: string): boolean;
  145. contains(searchString: string): boolean;
  146. equals(compareString: string): boolean;
  147. value(): string;
  148. }
  149. export interface IMetadata {
  150. key: string;
  151. value: any;
  152. }
  153. export var Kernel: IKernelConstructor;
  154. export var decorate: (decorator: (ClassDecorator|ParameterDecorator), target: any, parameterIndex?: number) => void;
  155. export function injectable(): (typeConstructor: any) => void;
  156. export function tagged(metadataKey: string, metadataValue: any): (target: any, targetKey: string, index?: number) => any;
  157. export function named(name: string): (target: any, targetKey: string, index?: number) => any;
  158. export function targetName(name: string): (target: any, targetKey: string, index: number) => any;
  159. export function inject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any;
  160. export function multiInject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any;
  161. export function makePropertyInjectDecorator(kernel: IKernel):
  162. (serviceIdentifier: (string|Symbol|INewable<any>)) => (proto: any, key: string) => void;
  163. export function makePropertyInjectNamedDecorator(kernel: IKernel):
  164. (serviceIdentifier: (string|Symbol|INewable<any>), named: string) => (proto: any, key: string) => void;
  165. export function makePropertyInjectTaggedDecorator(kernel: IKernel):
  166. (serviceIdentifier: (string|Symbol|INewable<any>), key: string, value: any) => (proto: any, propertyName: string) => void;
  167. export function makePropertyMultiInjectDecorator(kernel: IKernel):
  168. (serviceIdentifier: (string|Symbol|INewable<any>)) => (proto: any, key: string) => void;
  169. // constraint helpers
  170. export var traverseAncerstors: (request: IRequest, constraint: (request: IRequest) => boolean) => boolean;
  171. export var taggedConstraint: (tag: string) => (value: any) => (request: IRequest) => boolean;
  172. export var namedConstraint: (value: any) => (request: IRequest) => boolean;
  173. export var typeConstraint: (type: (Function|string)) => (request: IRequest) => boolean;
  174. }
  175. declare module "inversify" {
  176. export = inversify;
  177. }