export function obtool(input: Input) { return { map( mapper: (value: Input[keyof Input], key: string) => OutputValue ) { return <{[P in keyof Input]: OutputValue}>( Object.fromEntries( Object.entries(input).map( ([key, value]) => [key, mapper(value, key)] ) ) ) }, } }