# All files / container/decorators GapiController.ts

16.67% Statements 3/18
0% Branches 0/10
0% Functions 0/2
16.67% Lines 3/18

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

    1x
    1x

    1x

     import { ServiceMetadata } from '../types/ServiceMetadata';
    import { ServiceOptions } from '../types/ServiceOptions';
    import { ControllerMappingSettings, ControllerContainerService } from '../../services/controller-service/controller.service';
    import { Token } from '../Token';
    import { Container } from '../Container';

    export function GapiController<T, K extends keyof T>(optionsOrServiceName?: ControllerMappingSettings): Function {
        return function (target) {
            const original = target;
            original.prototype._controller = true;
            const service: ServiceMetadata<T, K> = {
                type: original
            };

            if (typeof optionsOrServiceName === 'string' || optionsOrServiceName instanceof Token) {
                service.multiple = (optionsOrServiceName as ServiceOptions<T, K>).multiple;
                service.global = (optionsOrServiceName as ServiceOptions<T, K>).global || false;
                service.transient = (optionsOrServiceName as ServiceOptions<T, K>).transient;

            } else if (optionsOrServiceName) { // ServiceOptions
                service.id = (optionsOrServiceName as ServiceOptions<T, K>).id;
                service.factory = (optionsOrServiceName as ServiceOptions<T, K>).factory;
                service.multiple = (optionsOrServiceName as ServiceOptions<T, K>).multiple;
                service.global = (optionsOrServiceName as ServiceOptions<T, K>).global || false;
                service.transient = (optionsOrServiceName as ServiceOptions<T, K>).transient;
            }
            Container.set(service);
        };
    }