const areDeterminer = <CommonPayload extends object>(
checkFn: Function,
...values: any[]
) => {
return {
every: <Payload extends CommonPayload>(
callback: ResultCallback<any, Payload> = resultCallback,
payload?: Payload
): boolean =>
callback(
values.every((value) => checkFn(value)),
values,
payload
),
forEach: <Payload extends CommonPayload>(
forEachCallback: ForEachCallback<any, Payload>,
payload?: Payload
) => {
isArray(values) &&
isFunction(forEachCallback) &&
values.forEach((value, index) =>
forEachCallback(checkFn(value), value, index, values, payload)
);
},
some: <Payload extends CommonPayload>(
callback: ResultCallback<any, Payload> = resultCallback,
payload?: Payload
): boolean =>
callback(
isArray(values) ? values.some((value) => checkFn(value)) : false,
values,
payload
),
};
};