@snipsonian/core
Version:
Core/base reusable javascript code snippets
25 lines (20 loc) • 764 B
text/typescript
import isFunction from '../is/isFunction';
import replacePlaceholders from '../string/replacePlaceholders';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type TValidator = (val: any) => boolean;
export default function assert(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
val: any,
validator: TValidator,
errorMessage = 'Assertion error for value \'{val}\'.',
): void {
assertValidValidator(validator);
if (!validator(val)) {
throw new Error(replacePlaceholders({ msg: errorMessage, placeholders: { val } }));
}
}
function assertValidValidator(validator: TValidator): void {
if (!isFunction(validator)) {
throw new Error('Please provide a validator function.');
}
}