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;
};
}