All files / decorators/effect effect.decorator.ts

100% Statements 10/10
75% Branches 3/4
100% Functions 2/2
100% Lines 10/10

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 301x   1x   1x 1x   1x 1x 1x   1x                       1x       1x    
import { createUniqueHash } from '../../helpers/create-unique-hash';
import { ServiceMetadata } from '../../container/types/ServiceMetadata';
import { Container } from '../../container/Container';
 
export function Effect<T, K extends keyof T>(options?: {init?: boolean}): Function {
    return function (target: Function) {
 
        const uniqueHashForClass = createUniqueHash(`${target}`);
        Object.defineProperty(target, 'originalName', { value: target.name || target.constructor.name, writable: false });
        Object.defineProperty(target, 'name', { value: uniqueHashForClass, writable: true });
 
        target['metadata'] = {
            moduleName: target['originalName'],
            moduleHash: uniqueHashForClass,
            type: 'effect',
            options: options || null,
            raw: `
            ---- @Effect '${target.name}' metadata----
            @Effect()
            ${target['originalName']}
            `
        };
 
        const service: ServiceMetadata<T, K> = {
            type: target
        };
 
        Container.set(service);
    };
}