diff --git a/typings/browser/ambient/inversify/index.d.ts b/typings/browser/ambient/inversify/index.d.ts new file mode 100644 index 00000000..44f6937d --- /dev/null +++ b/typings/browser/ambient/inversify/index.d.ts @@ -0,0 +1,211 @@ +// Generated by typings +// Source: node_modules/inversify-dts/inversify/inversify.d.ts +// Type definitions for inversify 2.0.0-beta.8 +// Project: https://github.com/inversify/InversifyJS +// Definitions by: inversify +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface Symbol { + toString(): string; + valueOf(): Object; +} + +interface SymbolConstructor { + (description?: string|number): Symbol; +} + +declare var Symbol: SymbolConstructor; + +declare namespace inversify { + + export interface IKernelConstructor { + new(): IKernel; + } + + export interface PlanAndResolve { + (args: PlanAndResolveArgs): T[]; + } + + export interface IMiddleware extends Function { + (next: PlanAndResolve): PlanAndResolve; + } + + export interface PlanAndResolveArgs { + multiInject: boolean; + serviceIdentifier: (string|Symbol|INewable); + target: ITarget; + contextInterceptor: (contexts: IContext) => IContext; + } + + export interface IKernel { + bind(serviceIdentifier: (string|Symbol|INewable)): IBindingToSyntax; + unbind(serviceIdentifier: (string|Symbol|any)): void; + unbindAll(): void; + get(serviceIdentifier: (string|Symbol|INewable)): T; + getNamed(serviceIdentifier: (string|Symbol|INewable), named: string): T; + getTagged(serviceIdentifier: (string|Symbol|INewable), key: string, value: any): T; + getAll(serviceIdentifier: (string|Symbol|INewable)): T[]; + load(...modules: IKernelModule[]): void; + applyMiddleware(...middleware: IMiddleware[]): void; + getServiceIdentifierAsString(serviceIdentifier: (string|Symbol|INewable)): string; + snapshot(): void; + restore(): void; + } + + export interface IKernelModule extends Function { + (kernel: IKernel): void; + } + + interface IBindingOnSyntax { + onActivation(fn: (context: IContext, injectable: T) => T): IBindingWhenSyntax; + } + + interface IBindingInSyntax { + inSingletonScope(): IBindingWhenOnSyntax; + } + + interface IBindingWhenSyntax { + when(constraint: (request: IRequest) => boolean): IBindingOnSyntax; + whenTargetNamed(name: string): IBindingOnSyntax; + whenTargetTagged(tag: string, value: any): IBindingOnSyntax; + whenInjectedInto(parent: (Function|string)): IBindingOnSyntax; + whenParentNamed(name: string): IBindingOnSyntax; + whenParentTagged(tag: string, value: any): IBindingOnSyntax; + whenAnyAncestorIs(ancestor: (Function|string)): IBindingOnSyntax; + whenNoAncestorIs(ancestor: (Function|string)): IBindingOnSyntax; + whenAnyAncestorNamed(name: string): IBindingOnSyntax; + whenAnyAncestorTagged(tag: string, value: any): IBindingOnSyntax; + whenNoAncestorNamed(name: string): IBindingOnSyntax; + whenNoAncestorTagged(tag: string, value: any): IBindingOnSyntax; + whenAnyAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax; + whenNoAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax; + } + + interface IBindingToSyntax { + to(constructor: { new(...args: any[]): T; }): IBindingInWhenOnSyntax; + toConstantValue(value: T): IBindingWhenOnSyntax; + toDynamicValue(func: () => T): IBindingWhenOnSyntax; + toConstructor(constructor: INewable): IBindingWhenOnSyntax; + toFactory(factory: IFactoryCreator): IBindingWhenOnSyntax; + toAutoFactory(serviceIdentifier: (string|Symbol|T2)): IBindingWhenOnSyntax; + toProvider(provider: IProviderCreator): IBindingWhenOnSyntax; + } + + interface IBindingInWhenOnSyntax extends IBindingInSyntax, IBindingWhenOnSyntax {} + interface IBindingWhenOnSyntax extends IBindingWhenSyntax, IBindingOnSyntax {} + + export interface IFactory extends Function { + (...args: any[]): (((...args: any[]) => T)|T); + } + + interface IFactoryCreator extends Function { + (context: IContext): IFactory; + } + + export interface INewable { + new(...args: any[]): T; + } + + export interface IProvider extends Function { + (): Promise; + } + + interface IProviderCreator extends Function { + (context: IContext): IProvider; + } + + export interface IContext { + kernel: IKernel; + plan: IPlan; + addPlan(plan: IPlan): void; + } + + export interface IPlan { + parentContext: IContext; + rootRequest: IRequest; + } + + export interface IRequest { + serviceIdentifier: (string|Symbol|INewable); + parentContext: IContext; + parentRequest: IRequest; + childRequests: IRequest[]; + target: ITarget; + bindings: IBinding[]; + addChildRequest( + serviceIdentifier: (string|Symbol|INewable), + bindings: (IBinding|IBinding[]), + target: ITarget): IRequest; + } + + export interface IBinding { + activated: boolean; + serviceIdentifier: (string|Symbol|INewable); + implementationType: INewable; + factory: IFactoryCreator; + provider: IProviderCreator; + constraint: (request: IRequest) => boolean; + onActivation: (context: IContext, injectable: T) => T; + cache: T; + dynamicValue: () => T; + scope: number; // BindingScope + type: number; // BindingType + } + + export interface ITarget { + serviceIdentifier: (string|Symbol|INewable); + name: IQueryableString; + metadata: Array; + hasTag(key: string): boolean; + isArray(): boolean; + matchesArray(name: string|Symbol|any): boolean; + isNamed(): boolean; + isTagged(): boolean; + matchesNamedTag(name: string): boolean; + matchesTag(key: string): (value: any) => boolean; + } + + export interface IQueryableString { + startsWith(searchString: string): boolean; + endsWith(searchString: string): boolean; + contains(searchString: string): boolean; + equals(compareString: string): boolean; + value(): string; + } + + export interface IMetadata { + key: string; + value: any; + } + + export var Kernel: IKernelConstructor; + export var decorate: (decorator: (ClassDecorator|ParameterDecorator), target: any, parameterIndex?: number) => void; + export function injectable(): (typeConstructor: any) => void; + export function tagged(metadataKey: string, metadataValue: any): (target: any, targetKey: string, index?: number) => any; + export function named(name: string): (target: any, targetKey: string, index?: number) => any; + export function targetName(name: string): (target: any, targetKey: string, index: number) => any; + export function inject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any; + export function multiInject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any; + + export function makePropertyInjectDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable)) => (proto: any, key: string) => void; + + export function makePropertyInjectNamedDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable), named: string) => (proto: any, key: string) => void; + + export function makePropertyInjectTaggedDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable), key: string, value: any) => (proto: any, propertyName: string) => void; + + export function makePropertyMultiInjectDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable)) => (proto: any, key: string) => void; + + // constraint helpers + export var traverseAncerstors: (request: IRequest, constraint: (request: IRequest) => boolean) => boolean; + export var taggedConstraint: (tag: string) => (value: any) => (request: IRequest) => boolean; + export var namedConstraint: (value: any) => (request: IRequest) => boolean; + export var typeConstraint: (type: (Function|string)) => (request: IRequest) => boolean; +} + +declare module "inversify" { + export = inversify; +} \ No newline at end of file diff --git a/typings/main/ambient/inversify/index.d.ts b/typings/main/ambient/inversify/index.d.ts new file mode 100644 index 00000000..44f6937d --- /dev/null +++ b/typings/main/ambient/inversify/index.d.ts @@ -0,0 +1,211 @@ +// Generated by typings +// Source: node_modules/inversify-dts/inversify/inversify.d.ts +// Type definitions for inversify 2.0.0-beta.8 +// Project: https://github.com/inversify/InversifyJS +// Definitions by: inversify +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface Symbol { + toString(): string; + valueOf(): Object; +} + +interface SymbolConstructor { + (description?: string|number): Symbol; +} + +declare var Symbol: SymbolConstructor; + +declare namespace inversify { + + export interface IKernelConstructor { + new(): IKernel; + } + + export interface PlanAndResolve { + (args: PlanAndResolveArgs): T[]; + } + + export interface IMiddleware extends Function { + (next: PlanAndResolve): PlanAndResolve; + } + + export interface PlanAndResolveArgs { + multiInject: boolean; + serviceIdentifier: (string|Symbol|INewable); + target: ITarget; + contextInterceptor: (contexts: IContext) => IContext; + } + + export interface IKernel { + bind(serviceIdentifier: (string|Symbol|INewable)): IBindingToSyntax; + unbind(serviceIdentifier: (string|Symbol|any)): void; + unbindAll(): void; + get(serviceIdentifier: (string|Symbol|INewable)): T; + getNamed(serviceIdentifier: (string|Symbol|INewable), named: string): T; + getTagged(serviceIdentifier: (string|Symbol|INewable), key: string, value: any): T; + getAll(serviceIdentifier: (string|Symbol|INewable)): T[]; + load(...modules: IKernelModule[]): void; + applyMiddleware(...middleware: IMiddleware[]): void; + getServiceIdentifierAsString(serviceIdentifier: (string|Symbol|INewable)): string; + snapshot(): void; + restore(): void; + } + + export interface IKernelModule extends Function { + (kernel: IKernel): void; + } + + interface IBindingOnSyntax { + onActivation(fn: (context: IContext, injectable: T) => T): IBindingWhenSyntax; + } + + interface IBindingInSyntax { + inSingletonScope(): IBindingWhenOnSyntax; + } + + interface IBindingWhenSyntax { + when(constraint: (request: IRequest) => boolean): IBindingOnSyntax; + whenTargetNamed(name: string): IBindingOnSyntax; + whenTargetTagged(tag: string, value: any): IBindingOnSyntax; + whenInjectedInto(parent: (Function|string)): IBindingOnSyntax; + whenParentNamed(name: string): IBindingOnSyntax; + whenParentTagged(tag: string, value: any): IBindingOnSyntax; + whenAnyAncestorIs(ancestor: (Function|string)): IBindingOnSyntax; + whenNoAncestorIs(ancestor: (Function|string)): IBindingOnSyntax; + whenAnyAncestorNamed(name: string): IBindingOnSyntax; + whenAnyAncestorTagged(tag: string, value: any): IBindingOnSyntax; + whenNoAncestorNamed(name: string): IBindingOnSyntax; + whenNoAncestorTagged(tag: string, value: any): IBindingOnSyntax; + whenAnyAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax; + whenNoAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax; + } + + interface IBindingToSyntax { + to(constructor: { new(...args: any[]): T; }): IBindingInWhenOnSyntax; + toConstantValue(value: T): IBindingWhenOnSyntax; + toDynamicValue(func: () => T): IBindingWhenOnSyntax; + toConstructor(constructor: INewable): IBindingWhenOnSyntax; + toFactory(factory: IFactoryCreator): IBindingWhenOnSyntax; + toAutoFactory(serviceIdentifier: (string|Symbol|T2)): IBindingWhenOnSyntax; + toProvider(provider: IProviderCreator): IBindingWhenOnSyntax; + } + + interface IBindingInWhenOnSyntax extends IBindingInSyntax, IBindingWhenOnSyntax {} + interface IBindingWhenOnSyntax extends IBindingWhenSyntax, IBindingOnSyntax {} + + export interface IFactory extends Function { + (...args: any[]): (((...args: any[]) => T)|T); + } + + interface IFactoryCreator extends Function { + (context: IContext): IFactory; + } + + export interface INewable { + new(...args: any[]): T; + } + + export interface IProvider extends Function { + (): Promise; + } + + interface IProviderCreator extends Function { + (context: IContext): IProvider; + } + + export interface IContext { + kernel: IKernel; + plan: IPlan; + addPlan(plan: IPlan): void; + } + + export interface IPlan { + parentContext: IContext; + rootRequest: IRequest; + } + + export interface IRequest { + serviceIdentifier: (string|Symbol|INewable); + parentContext: IContext; + parentRequest: IRequest; + childRequests: IRequest[]; + target: ITarget; + bindings: IBinding[]; + addChildRequest( + serviceIdentifier: (string|Symbol|INewable), + bindings: (IBinding|IBinding[]), + target: ITarget): IRequest; + } + + export interface IBinding { + activated: boolean; + serviceIdentifier: (string|Symbol|INewable); + implementationType: INewable; + factory: IFactoryCreator; + provider: IProviderCreator; + constraint: (request: IRequest) => boolean; + onActivation: (context: IContext, injectable: T) => T; + cache: T; + dynamicValue: () => T; + scope: number; // BindingScope + type: number; // BindingType + } + + export interface ITarget { + serviceIdentifier: (string|Symbol|INewable); + name: IQueryableString; + metadata: Array; + hasTag(key: string): boolean; + isArray(): boolean; + matchesArray(name: string|Symbol|any): boolean; + isNamed(): boolean; + isTagged(): boolean; + matchesNamedTag(name: string): boolean; + matchesTag(key: string): (value: any) => boolean; + } + + export interface IQueryableString { + startsWith(searchString: string): boolean; + endsWith(searchString: string): boolean; + contains(searchString: string): boolean; + equals(compareString: string): boolean; + value(): string; + } + + export interface IMetadata { + key: string; + value: any; + } + + export var Kernel: IKernelConstructor; + export var decorate: (decorator: (ClassDecorator|ParameterDecorator), target: any, parameterIndex?: number) => void; + export function injectable(): (typeConstructor: any) => void; + export function tagged(metadataKey: string, metadataValue: any): (target: any, targetKey: string, index?: number) => any; + export function named(name: string): (target: any, targetKey: string, index?: number) => any; + export function targetName(name: string): (target: any, targetKey: string, index: number) => any; + export function inject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any; + export function multiInject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any; + + export function makePropertyInjectDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable)) => (proto: any, key: string) => void; + + export function makePropertyInjectNamedDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable), named: string) => (proto: any, key: string) => void; + + export function makePropertyInjectTaggedDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable), key: string, value: any) => (proto: any, propertyName: string) => void; + + export function makePropertyMultiInjectDecorator(kernel: IKernel): + (serviceIdentifier: (string|Symbol|INewable)) => (proto: any, key: string) => void; + + // constraint helpers + export var traverseAncerstors: (request: IRequest, constraint: (request: IRequest) => boolean) => boolean; + export var taggedConstraint: (tag: string) => (value: any) => (request: IRequest) => boolean; + export var namedConstraint: (value: any) => (request: IRequest) => boolean; + export var typeConstraint: (type: (Function|string)) => (request: IRequest) => boolean; +} + +declare module "inversify" { + export = inversify; +} \ No newline at end of file