Skip to content

Context

Context is user-defined data stored inside the graph runtime.

Graphlet does not interpret context. It only stores it, returns it in snapshots and notifies listeners when it changes.

Create graph with context

ts
import { Graph } from "@graphlet/core";

type Node = "profile" | "review";

type Payload = {
  source: "button" | "form";
};

type Context = {
  profile: {
    name: string;
    email: string;
  };
};

const graph = new Graph<Node, Payload, Context>(
  [
    ["profile", ["review"]],
    ["review", ["profile"]]
  ],
  {
    initial: "profile",
    context: {
      profile: {
        name: "",
        email: ""
      }
    }
  }
);

Read context

ts
graph.getContext();

Update context by value

ts
graph.setContext({
  profile: {
    name: "Ada Lovelace",
    email: "ada@example.com"
  }
});

Update context with function

ts
graph.setContext((ctx) => ({
  ...ctx,
  profile: {
    ...ctx.profile,
    name: "Ada Lovelace"
  }
}));

Context in snapshot

ts
graph.getSnapshot();
ts
{
  current: "profile",
  next: ["review"],
  context: {
    profile: {
      name: "Ada Lovelace",
      email: "ada@example.com"
    }
  },
  history: ["profile"]
}

Context update event

ts
graph.subscribe((snapshot, event) => {
  if (event.type === "context") {
    console.log(event.previousContext);
    console.log(event.context);
  }
});