import { Observer, Accessor, AccessorT } from "./observer"; function _max(): Observer { let max: number; return { observe: (value: number, idx: number) => { if (idx === 0) { max = value; } else if (max < value) { max = value; } }, peek: () => max }; } export type MaxAccessor = AccessorT; export function max(): Observer; export function max(callbackFn: MaxAccessor): Observer; export function max(callbackFn?: MaxAccessor): Observer | Observer { return callbackFn ? Accessor(_max, callbackFn) : _max(); }