import { every, some } from 'conducer'
const hasRole = roleExpected => ({ user }) => user.roles.some(role => role === roleExpected)
const isActiveUser = ({ user: { status } }) => status
const earnBadgeModerator = every([
isActiveUser,
some([
hasRole('admin'),
hasRole('moderator'),
])
])
const facts = { user: { status: true, roles: ['moderator', 'admin'] } }
const newFacts = do {
if (earnBadgeModerator(facts)) {
({ ...facts, user: { ...facts.user, badge: ['moderator'] } })
}
else {
facts
}
}
console.log(newFacts)