An isomorphic actor system
ingrates
is an actor system based on async generators. I provides a very small API surface area and tries to remain relatively out of your way.
You can find docs at ingrates.littlebonsai.co.uk
import createActorSystem from "@little-bonsai/ingrates";
async function* ChildActor({ parent, dispatch }, firstname, lastname) {
const msg = yield;
if (msg.type === "HELLO") {
dispatch(msg.src, {
type: "GOODBYE",
msg: \`say goodbye to \${firstname} \${lastname}\`,
});
}
}
async function* RootActor({ spawn, self, dispatch }) {
const myChild = spawn(ChildActor, "Bert", "Jurnegen");
dispatch(myChild, { type: "HELLO" });
while (true) {
const msg = yield;
if (msg.type === "GOODBYE") {
console.log("Please... my son. He's very sick");
}
}
}
createActorSystem()(RootActor);