evt
Version:
Type safe replacement for node's EventEmitter
23 lines (18 loc) • 718 B
text/typescript
import { toReduceArguments, ReduceArguments } from "./reduceify";
import { every } from "./every";
export function arrAllEqualsTo<ArrOf>(
arr: readonly ArrOf[],
to: ArrOf,
areEquals: (e: ArrOf, to: ArrOf) => boolean = (e, to) => e === to
): boolean {
return arr.reduce(...every<ArrOf>(e => areEquals(e, to)));
};
export function allEqualsTo<ArrOf>(
to: ArrOf,
areEquals?: (e: ArrOf, to: ArrOf) => boolean
): ReduceArguments<ArrOf, boolean> {
return toReduceArguments(arrAllEqualsTo, to, areEquals);
}
export function allEqualsToFactory({ areEquals }: { areEquals: <T>(e: T, to: T) => boolean }) {
return { "allEqualsTo": <ArrOf>(to: ArrOf) => allEqualsTo<ArrOf>(to, areEquals) };
}