All files / lib/decorators Injectable.ts

100% Statements 6/6
100% Branches 3/3
100% Functions 2/2
100% Lines 6/6

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 183x               3x 21x     21x 21x 21x      
import { Keys } from "../Keys";
import { IInstantiationMode } from "../interfaces/IInstantiatable";
 
 
export interface IInjectableOptions {
    instantiation: IInstantiationMode;
}
 
export function Injectable(options: IInjectableOptions = {instantiation: "singleton"}) {
    return (
        target: Function
    ) => {
        const metadata: any = Reflect.getMetadata(Keys.INJECTABLE_KEY, target.prototype) || {};
        metadata[Keys.INJECTABLE_KEY] = options;
        Reflect.defineMetadata(Keys.INJECTABLE_KEY, metadata, target.prototype);
    };
}