# RefGraph.mapNodes

Map all node data.

## Signatures

```ts
export declare const mapNodes: {
    <N>(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>, f: (data: N) => N): Effect.Effect<Graph.Graph<N, E, T>, Err, R>;
};
```

## Why

Applies `mapNodes` through `RefSubject.update` and publishes one coherent graph replacement;
this is a mutation, not a read-only Computed projection.

## Ownership and lifetime

The Effect starts when run, participates in the source ref's serialized update boundary, and
acquires no resource. It returns the committed graph and retains the ref's E and R channels.
