# RefGraph.updateNode

Update a node's data.

## Signatures

```ts
export declare const updateNode: {
    <N>(nodeIndex: Graph.NodeIndex, f: (data: N) => N): <E, T extends Graph.Kind, Err, R>(ref: RefGraph<N, E, T, Err, R>) => Effect.Effect<Graph.Graph<N, E, T>, Err, R>;
    <N, E, T extends Graph.Kind, Err, R>(ref: RefGraph<N, E, T, Err, R>, nodeIndex: Graph.NodeIndex, f: (data: N) => N): Effect.Effect<Graph.Graph<N, E, T>, Err, R>;
};
```

## Why

Keeps update node atomic with respect to competing RefSubject writes instead of splitting the
read and replacement into separate effects.

## Ownership and lifetime

Running update node performs one serialized graph transition and resolves with its committed
value. It acquires no resource; failures and services remain those of the source ref.
