ensureNode function
Guarantee screen exists as a node without claiming a visit.
Implementation
RouteGraphFile ensureNode(RouteGraphFile g, String screen, String ts) {
final s = screen.trim();
if (s.isEmpty) return g;
if (g.nodes.any((n) => n.screen == s)) return g;
return RouteGraphFile(
schemaVersion: g.schemaVersion,
type: g.type,
nodes: <RouteGraphNode>[
...g.nodes,
RouteGraphNode(screen: s, firstSeen: ts, lastSeen: ts, visitCount: 0),
],
edges: g.edges,
sync: g.sync.markDirty(ts),
);
}