All files / lib/modifiers Initializers.ts

94.73% Statements 18/19
75% Branches 3/4
100% Functions 3/3
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  12x   12x 12x 12x 12x 12x 12x       12x 45x                   45x 45x       45x 2x         99x   59x 353x     58x          
import { IInitializer } from "./initializers/IInitializer";
import { RunInitMethodInitializer } from "./initializers/RunInitMethodInitializer";
import { IResolver } from "../interfaces/IResolver";
import { RunSettersInitializer } from "./initializers/RunSettersInitializer";
import { Utils } from "../Utils";
import { InjectPropertiesInitializer } from "./initializers/InjectPropertiesInitializer";
import { RunBeforeModifier } from "./initializers/RunBeforeModifier";
import { RunAfterModifier } from "./initializers/RunAfterModifier";
import { MethodWrapperModifier } from "./initializers/MethodWrapperModifier";
import { IBaseDefinition } from "../definitions/definitionInterfaces/IBaseDefinition";
import { Type } from "../interfaces/IType";
 
export class Initializers {
    initializers: IInitializer[] = [
        new RunBeforeModifier(this.resolver),
        new RunAfterModifier(this.resolver),
        new MethodWrapperModifier(this.resolver),
 
        new InjectPropertiesInitializer(this.resolver),
        new RunSettersInitializer(this.resolver),
        new RunInitMethodInitializer(this.resolver),
    ];
 
    constructor(private readonly resolver: IResolver, initializers?: IInitializer[]) {
        Iif (initializers) this.initializers = initializers;
    }
 
    addInitializers(InitializerTypes: Type<IInitializer>[]) {
        for (const InitializerType of InitializerTypes) {
            this.initializers.push(new InitializerType(this.resolver));
        }
    }
 
    async runInitializers(instance: any, definition: IBaseDefinition) {
        if (!instance || !Utils.isClass(definition.content)) return instance;
 
        for (const initializer of this.initializers) {
            instance = await initializer.run(instance, definition);
        }
 
        return instance;
    }
 
 
}