export default function select()

in src/legacy/select.ts [27:58]


export default function select<T>(selector: SelectorFunction<T>) {
    return function decorator<Target extends Function>(target: Target): Target {
        // do not execute the selector function in test mode, simply returning
        // the target that was passed in
        if (getGlobalContext().legacyTestMode) {
            return target;
        }

        let context = this;
        let argumentPosition = target.length - 1;
        let actionTarget = getOriginalTarget(target);

        if (actionTarget) {
            argumentPosition = actionTarget.length - 1;
        }

        let returnValue: any = function() {
            let state = createCursorFromSelector<T>(selector, arguments);
            let args = Array.prototype.slice.call(arguments);
            if (typeof args[argumentPosition] === typeof undefined) {
                for (var i = args.length; i < argumentPosition; i++) {
                    args[i] = undefined;
                }
                args[argumentPosition] = state;
            }
            return target.apply(context, args);
        };

        setActionType(returnValue, getActionType(<any>target));
        return <Target>returnValue;
    };
}