UNPKG

5.35 kBTypeScriptView Raw
1import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
2import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
3import { Type } from '@nestjs/common/interfaces/type.interface';
4import { ContextId, InstancePerContext, InstanceWrapper, PropertyMetadata } from './instance-wrapper';
5import { Module } from './module';
6/**
7 * The type of an injectable dependency
8 */
9export declare type InjectorDependency = Type<any> | Function | string | symbol;
10/**
11 * The property-based dependency
12 */
13export interface PropertyDependency {
14 key: string;
15 name: InjectorDependency;
16 isOptional?: boolean;
17 instance?: any;
18}
19/**
20 * Context of a dependency which gets injected by
21 * the injector
22 */
23export interface InjectorDependencyContext {
24 /**
25 * The name of the property key (property-based injection)
26 */
27 key?: string | symbol;
28 /**
29 * The name of the function or injection token
30 */
31 name?: string | symbol;
32 /**
33 * The index of the dependency which gets injected
34 * from the dependencies array
35 */
36 index?: number;
37 /**
38 * The dependency array which gets injected
39 */
40 dependencies?: InjectorDependency[];
41}
42export declare class Injector {
43 loadMiddleware(wrapper: InstanceWrapper, collection: Map<string, InstanceWrapper>, module: Module, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<void>;
44 loadController(wrapper: InstanceWrapper<Controller>, module: Module, contextId?: ContextId): Promise<void>;
45 loadInjectable(wrapper: InstanceWrapper<Controller>, module: Module, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<void>;
46 loadProvider(wrapper: InstanceWrapper<Injectable>, module: Module, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<void>;
47 loadPrototype<T>({ name }: InstanceWrapper<T>, collection: Map<string, InstanceWrapper<T>>, contextId?: ContextId): void;
48 applyDoneHook<T>(wrapper: InstancePerContext<T>): () => void;
49 loadInstance<T>(wrapper: InstanceWrapper<T>, collection: Map<string, InstanceWrapper>, module: Module, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<void>;
50 resolveConstructorParams<T>(wrapper: InstanceWrapper<T>, module: Module, inject: InjectorDependency[], callback: (args: unknown[]) => void, contextId?: ContextId, inquirer?: InstanceWrapper, parentInquirer?: InstanceWrapper): Promise<void>;
51 reflectConstructorParams<T>(type: Type<T>): any[];
52 reflectOptionalParams<T>(type: Type<T>): any[];
53 reflectSelfParams<T>(type: Type<T>): any[];
54 resolveSingleParam<T>(wrapper: InstanceWrapper<T>, param: Type<any> | string | symbol | any, dependencyContext: InjectorDependencyContext, module: Module, contextId?: ContextId, inquirer?: InstanceWrapper, keyOrIndex?: string | number): Promise<InstanceWrapper<any>>;
55 resolveParamToken<T>(wrapper: InstanceWrapper<T>, param: Type<any> | string | symbol | any): any;
56 resolveComponentInstance<T>(module: Module, name: any, dependencyContext: InjectorDependencyContext, wrapper: InstanceWrapper<T>, contextId?: ContextId, inquirer?: InstanceWrapper, keyOrIndex?: string | number): Promise<InstanceWrapper>;
57 resolveComponentHost<T>(module: Module, instanceWrapper: InstanceWrapper<T>, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<InstanceWrapper>;
58 lookupComponent<T = any>(providers: Map<string | symbol, InstanceWrapper>, module: Module, dependencyContext: InjectorDependencyContext, wrapper: InstanceWrapper<T>, contextId?: ContextId, inquirer?: InstanceWrapper, keyOrIndex?: string | number): Promise<InstanceWrapper<T>>;
59 lookupComponentInParentModules<T = any>(dependencyContext: InjectorDependencyContext, module: Module, wrapper: InstanceWrapper<T>, contextId?: ContextId, inquirer?: InstanceWrapper, keyOrIndex?: string | number): Promise<any>;
60 lookupComponentInImports(module: Module, name: any, wrapper: InstanceWrapper, moduleRegistry?: any[], contextId?: ContextId, inquirer?: InstanceWrapper, keyOrIndex?: string | number, isTraversing?: boolean): Promise<any>;
61 resolveProperties<T>(wrapper: InstanceWrapper<T>, module: Module, inject?: InjectorDependency[], contextId?: ContextId, inquirer?: InstanceWrapper, parentInquirer?: InstanceWrapper): Promise<PropertyDependency[]>;
62 reflectProperties<T>(type: Type<T>): PropertyDependency[];
63 applyProperties<T = any>(instance: T, properties: PropertyDependency[]): void;
64 instantiateClass<T = any>(instances: any[], wrapper: InstanceWrapper, targetMetatype: InstanceWrapper, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<T>;
65 loadPerContext<T = any>(instance: T, module: Module, collection: Map<string, InstanceWrapper>, ctx: ContextId, wrapper?: InstanceWrapper): Promise<T>;
66 loadEnhancersPerContext(wrapper: InstanceWrapper, ctx: ContextId, inquirer?: InstanceWrapper): Promise<void>;
67 loadCtorMetadata(metadata: InstanceWrapper<any>[], contextId: ContextId, inquirer?: InstanceWrapper, parentInquirer?: InstanceWrapper): Promise<any[]>;
68 loadPropertiesMetadata(metadata: PropertyMetadata[], contextId: ContextId, inquirer?: InstanceWrapper): Promise<PropertyDependency[]>;
69 private getInquirerId;
70 private resolveScopedComponentHost;
71 private isInquirerRequest;
72 private isInquirer;
73 private addDependencyMetadata;
74}