import { OperatorFunction } from "../types"; | |
import { map } from "../operators/map"; | |
const { isArray } = Array; | |
function callOrApply<T, R>(fn: ((...values: T[]) => R), args: T|T[]): R { | |
return isArray(args) ? fn(...args) : fn(args); | |
} | |
/** | |
* Used in several -- mostly deprecated -- situations where we need to | |
* apply a list of arguments or a single argument to a result selector. | |
*/ | |
export function mapOneOrManyArgs<T, R>(fn: ((...values: T[]) => R)): OperatorFunction<T|T[], R> { | |
return map(args => callOrApply(fn, args)) | |
} |