wildcard
Experimental
import { wildcard } from "@c11/engine.runtime";
Overview
wildcard allow selecting arbitrarily deep paths from state.
They are meant to be used by producer to obtain more powerful triggers.
Example
For example:
cons titleWatchProducer: producer = ({
title = observe.todos[wildcard].title
}) => { ... }
titleWatchProducer will re-run whenever any todo's title changes.
What changed?
wildcard triggers producer whenever anything on the matching path changes, but
producer won't know what exactly has changed. To get information about exactly
what has changed, wildcard can be assigned to another
arg, to get information about exactly which path
has received the change. For example,
const prod: producer = ({
id = wildcard,
title = observe.todos[arg.id].title
}) => { ... }
id will contain the changed todo's ID.
Assign the wildcard to an arg is also the only way to use wildcard with
update operator. Only observe can make use of wildcard directly in its
path.