PackagesGraph
JGF
Converter for JSON Graph Format — a standardized JSON schema for graph data.
Converter for JSON Graph Format — a standardized JSON schema for graph data.
Resources
API
import { toJGF, fromJGF, jgfConverter } from '@statelyai/graph/jgf';
import { createGraph } from '@statelyai/graph';
// Export
const graph = createGraph({
id: 'recipe',
nodes: [
{ id: 'chop', label: 'Chop Vegetables' },
{ id: 'boil', label: 'Boil Water' },
{ id: 'cook', label: 'Cook Pasta' },
{ id: 'mix', label: 'Mix Together' },
{ id: 'serve', label: 'Serve' },
],
edges: [
{ id: 'e0', sourceId: 'boil', targetId: 'cook' },
{ id: 'e1', sourceId: 'cook', targetId: 'mix' },
{ id: 'e2', sourceId: 'chop', targetId: 'mix' },
{ id: 'e3', sourceId: 'mix', targetId: 'serve' },
],
});
const jgf = toJGF(graph);
// {
// graph: {
// id: 'recipe',
// directed: true,
// nodes: [{ id: 'chop', label: 'Chop Vegetables' }, ...],
// edges: [{ source: 'boil', target: 'cook' }, ...]
// }
// }
// Import
const imported = fromJGF({
graph: {
id: 'auth',
directed: true,
nodes: [
{ id: 'login', label: 'Login Page' },
{ id: 'mfa', label: 'MFA Challenge' },
{ id: 'dashboard', label: 'Dashboard' },
{ id: 'denied', label: 'Access Denied' },
],
edges: [
{ source: 'login', target: 'mfa', label: 'credentials ok' },
{ source: 'login', target: 'denied', label: 'invalid' },
{ source: 'mfa', target: 'dashboard', label: 'verified' },
{ source: 'mfa', target: 'denied', label: 'failed' },
],
},
});
// a graph containing:
// nodes: - login - mfa - dashboard - denied
// edges: - (login -> mfa) - (login -> denied) - (mfa -> dashboard) - (mfa -> denied)toJGF(graph): JGFGraph
Graph-level properties (initialNodeId, data, direction) stored in graph.metadata. Node properties (parentId, data, visual props) stored in node.metadata.
fromJGF(jgf): Graph
Restores all metadata back to graph/node/edge properties.
jgfConverter
Pre-built GraphFormatConverter<JGFGraph>:
const jgf = jgfConverter.to(graph);
const graph = jgfConverter.from(jgf);Types
| Type | Description |
|---|---|
JGFGraph | { graph: { id?, directed?, metadata?, nodes, edges } } |
JGFNode | { id, label?, metadata? } |
JGFEdge | { id?, source, target, label?, metadata? } |