index.d.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Type definitions for ngraph.graph v18.0.0
  2. // Project: https://github.com/anvaka/ngraph.graph
  3. // Definitions by: Nathan Westlake <https://github.com/CorayThan>
  4. // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
  5. declare module "ngraph.graph" {
  6. import { EventedType } from 'ngraph.events'
  7. export type NodeId = string | number
  8. export type LinkId = string
  9. export interface Link<Data = any> {
  10. id: LinkId,
  11. fromId: NodeId,
  12. toId: NodeId,
  13. data: Data
  14. }
  15. export interface Node<Data = any> {
  16. id: NodeId,
  17. links: Link[],
  18. data: Data
  19. }
  20. export interface Graph<NodeData = any, LinkData = any> {
  21. addNode: (node: NodeId, data?: NodeData) => Node<NodeData>
  22. addLink: (from: NodeId, to: NodeId, data?: LinkData) => Link<LinkData>
  23. removeLink: (link: Link<LinkData>) => boolean
  24. removeNode: (nodeId: NodeId) => boolean
  25. getNode: (nodeId: NodeId) => Node<NodeData> | undefined
  26. hasNode: (nodeId: NodeId) => Node<NodeData> | undefined
  27. getLink: (fromNodeId: NodeId, toNodeId: NodeId) => Link<LinkData> | null
  28. hasLink: (fromNodeId: NodeId, toNodeId: NodeId) => Link<LinkData> | null
  29. getNodesCount: () => number
  30. getLinksCount: () => number
  31. getNodeCount: () => number
  32. getLinkCount: () => number
  33. getLinks: (nodeId: NodeId) => Link<LinkData>[] | null
  34. /** To stop the iteration return true in the callback */
  35. forEachNode: (callbackPerNode: (node: Node<NodeData>) => void | undefined | null | boolean) => void
  36. forEachLinkedNode: (nodeId: NodeId, callbackPerNode: (node: Node<NodeData>, link: Link<LinkData>) => void, oriented: boolean) => void
  37. forEachLink: (callbackPerLink: (link: Link<LinkData>) => void) => void
  38. beginUpdate: () => void
  39. endUpdate: () => void
  40. clear: () => void
  41. }
  42. export default function createGraph<NodeData = any, LinkData = any>(options?: { multigraph: boolean }): Graph<NodeData, LinkData> & EventedType
  43. }