Shumoku

API リファレンス

Shumoku の TypeScript API の概要

Shumoku の TypeScript API の概要です。各パッケージの詳しい使い方は、それぞれの README を参照してください。

パッケージ構成

パッケージ説明
shumokuメインパッケージ(core + SVG/HTML レンダラーを再エクスポート)
@shumoku/coreモデル・パーサー・レイアウトエンジン・テーマ・プラグインキット
@shumoku/renderer-svgSVG レンダーパイプライン
@shumoku/renderer-htmlインタラクティブ HTML 出力
@shumoku/renderer-pngPNG 出力(Node.js のみ)
@shumoku/catalogデバイス/サービスカタログ
@shumoku/plugin-sdkデータソースプラグイン用 HTTP クライアント

旧 API(HierarchicalLayoutEngine / SvgRenderer クラス、@shumoku/parser-yaml パッケージ)は削除されました。現在はパイプライン関数(prepareRenderrenderSvg 等)と computeNetworkLayout() を使います。

パース

import { YamlParser } from 'shumoku'

const { graph, warnings } = new YamlParser().parse(yamlString)

parse(){ graph: NetworkGraph, warnings?: ParseWarning[] } を返します(回復可能な問題では例外を投げず warnings に積みます)。複数ファイル(file: 参照)には HierarchicalParser を使います。

レイアウト

import { computeNetworkLayout } from 'shumoku'

const layout = await computeNetworkLayout(graph)

ノード・リンク・サブグラフを配置した LayoutResult を返します(ネットワーク図に特化したタイア化レイアウト)。通常はレンダラーが内部で呼ぶため、直接呼ぶ必要はありません。

レンダリング

import { prepareRender, renderSvg, renderGraphToSvg } from '@shumoku/renderer-svg'
import { renderGraphToHtml } from '@shumoku/renderer-html'
import { renderGraphToPng } from '@shumoku/renderer-png' // Node.js のみ

// 一括
const svg = await renderGraphToSvg(graph)
const html = await renderGraphToHtml(graph, { title: 'My Network' })
const png = await renderGraphToPng(graph, { scale: 2 })

// パイプラインを分割(prepared を複数の出力で再利用)
const prepared = await prepareRender(graph) // アイコン寸法解決 + レイアウト
const svg2 = await renderSvg(prepared)

prepareRender / renderSvg / renderGraphToSvg / renderGraphToHtml / renderGraphToPng はいずれも async です(renderHtml(prepared) のみ同期)。

テーマ

import { lightTheme, darkTheme, createTheme, mergeTheme } from 'shumoku'

組み込みテーマは lightTheme(デフォルト)と darkThemecreateTheme() / mergeTheme() でカスタマイズできます。テーマは NetworkGraph.settings.theme'light' | 'dark')でも指定できます。詳しくはスタイルとテーマを参照してください。

NetworkGraph

interface NetworkGraph {
  version: string
  name?: string
  description?: string
  nodes: Node[]
  links: Link[]
  subgraphs?: Subgraph[]
  settings?: NetworkSettings
}

Node / Link / Subgraph / NetworkSettings の完全な型定義は @shumoku/core@shumoku/core/models)を参照してください。データ構造の詳細は JSON リファレンスにもあります。

アイコン

ベンダーアイコンは CDN から配信され、レンダラーが寸法を取得して正しいアスペクト比で描画します。利用可能なアイコンはベンダーアイコンを参照してください。

目次