c
Size: a a a
c
c
c
c
c
const can = ({ source, action, on, target = createEvent() }) => {
const triggered = sample({
source: is.unit(on) ? on : createStore(on),
clock: source,
fn: (source, clock) => ({ source, clock })
})
const allowed = guard({
source: combine([triggered, $rights]),
filter: ([triggered, rights]) => rights[triggered.source.type][action],
})
forward({
from: allowed.map(([{ clock }]) => clock),
to: target,
})
return target
}R
const can = ({ source, action, on, target = createEvent() }) => {
const triggered = sample({
source: is.unit(on) ? on : createStore(on),
clock: source,
fn: (source, clock) => ({ source, clock })
})
const allowed = guard({
source: combine([triggered, $rights]),
filter: ([triggered, rights]) => rights[triggered.source.type][action],
})
forward({
from: allowed.map(([{ clock }]) => clock),
to: target,
})
return target
}D
🚀🚀
D
🚀🚀
🚀🚀
D
🚀🚀
D
D
D
D
D
D
DS