graph README

The project's README from github.com/statelyai/graph. As one markdown file: README.md.

@statelyai/graph

Graphs as plain JSON, with the algorithms, formats, and layout engines to do real work with them.

A graph is just { nodes, edges } data, and every operation is a standalone, tree-shakable function. Built and used by Stately to power its visual tooling for complex systems.

Documentation

Why @statelyai/graph?

Installation

npm install @statelyai/graph

Quick start

Create a publishing workflow and find the shortest route from draft to published:

import { createGraph, getShortestPath } from '@statelyai/graph';

const graph = createGraph({
  nodes: [
    { id: 'draft' },
    { id: 'review' },
    { id: 'published' },
  ],
  edges: [
    { id: 'submit', sourceId: 'draft', targetId: 'review' },
    { id: 'approve', sourceId: 'review', targetId: 'published' },
  ],
});

const path = getShortestPath(graph, { from: 'draft', to: 'published' });

if (path) {
  console.log([path.source.id, ...path.steps.map(({ node }) => node.id)]);
  // ['draft', 'review', 'published']
}

For guides, API details, and adapter dependencies, see the docs. To contribute, see CONTRIBUTING.md.

Inspiration

Inspired by NetworkX, Graphology, and graphlib.

License

MIT

graph (statelyai/graph)

Searching Database…

246 ·GitHub
Что это такое?Библиотека на TypeScript с универсальными утилитами для работы с графами: простая JSON-модель данных {nodes, edges} плюс алгоритмы, конвертеры форматов и движки раскладки, чтобы эти данные реально использовать.
Это библиотека для импорта или отдельное приложение?Это библиотека: каждая операция — самостоятельная tree-shakable-функция для импорта, а не фреймворк или GUI-инструмент.
Как добавить её в проект?Установите пакет из npm и импортируйте нужные функции или адаптеры через опциональные subpath-импорты.
Нужно ли что-то, кроме Node/npm, чтобы ей пользоваться?Только среда JS/TS; конвертеры форматов и движки раскладки (Graphviz, ELK, dagre и т.д.) — опциональные адаптеры, которые подтягиваются, только если вы их используете.
Каждый формат и движок раскладки включён по умолчанию?Нет, основной пакет покрывает только модель данных и алгоритмы; каждый из 14 форматов и 8 движков раскладки — отдельный опциональный адаптер со своими зависимостями.
Кому это вообще нужно?Разработчикам, которые строят редакторы диаграмм, нодовые редакторы, statecharts или инструменты визуализации архитектуры и которым нужна быстрая сериализуемая модель графа с настоящими алгоритмами.
Почему это быстрее, чем библиотеки вроде graphology?Она хранит графы как обычный JSON с прозрачными индексированными поисками вместо экземпляров классов, что, как сказано в README, делает её в 9-15 раз быстрее graphology при построении графа на 100 тысяч узлов.
Может ли она превращать автоматы XState в графы?Да, её создала Stately, и в неё входит адаптер для превращения автоматов XState в графы.
Какие виды алгоритмов входят в состав?Кратчайшие пути, центральность, сообщества, потоки, паросочетания и изоморфизм; всё протестировано на граничных случаях вроде петель и параллельных рёбер и реализовано итеративно, чтобы глубокие графы не переполняли стек.
Данные графа строго типизированы?Да, дженерики используются от начала до конца для узлов, рёбер, портов и самого графа.
What are similar projects?networkx, cytoscape.js, G6, uPlot, LogicFlow, rete, Chart.js, liteparse
Creator
statelyai
Size
1.8 MB
Stars
246
Age
8mo
Commits · 90 Days