docs: def node_link_data(graph: BELGraph) -> Mapping[str, Any]:
      """Convert a BEL graph to a node-link format.
  
      Adapted from :func:`networkx.readwrite.json_graph.node_link_data`
      """
      nodes = sorted(graph, key=methodcaller('as_bel'))
  
      mapping = dict(zip(nodes, count()))
  
      return {
          'directed': True,
          'multigraph': True,
          'graph': graph.graph.copy(),
          'nodes': [
              _augment_node(node)
              for node in nodes
          ],
          'links': [
              dict(chain(
                  data.copy().items(),
                  [('source', mapping[u]), ('target', mapping[v]), ('key', key)]
              ))
              for u, v, key, data in graph.edges(keys=True, data=True)
          ]
      }