import type { Predicate } from './prelude.js' import { inspect } from 'util' type Identity = (value: T) => T const predicate: (f: Predicate, name?: string) => Identity = (f, name) => value => { if (!f(value)) { throw new TypeError(`Expected ${name === undefined ? 'predicate' : `${inspect(name)} predicate`} to pass for ${inspect(value)}.`) } return value } export default predicate