@manya-os/weave 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/LICENSE +21 -0
- package/README.md +252 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +6 -0
- package/dist/esm/package.json +1 -0
- package/dist/types/errors.d.ts +28 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/export/exporter.d.ts +47 -0
- package/dist/types/export/exporter.d.ts.map +1 -0
- package/dist/types/export/index.d.ts +8 -0
- package/dist/types/export/index.d.ts.map +1 -0
- package/dist/types/filter/filter.d.ts +46 -0
- package/dist/types/filter/filter.d.ts.map +1 -0
- package/dist/types/filter/index.d.ts +8 -0
- package/dist/types/filter/index.d.ts.map +1 -0
- package/dist/types/graph/graph.d.ts +99 -0
- package/dist/types/graph/graph.d.ts.map +1 -0
- package/dist/types/graph/index.d.ts +8 -0
- package/dist/types/graph/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interactive/index.d.ts +8 -0
- package/dist/types/interactive/index.d.ts.map +1 -0
- package/dist/types/interactive/interactive.d.ts +84 -0
- package/dist/types/interactive/interactive.d.ts.map +1 -0
- package/dist/types/layout/index.d.ts +9 -0
- package/dist/types/layout/index.d.ts.map +1 -0
- package/dist/types/layout/layout.d.ts +95 -0
- package/dist/types/layout/layout.d.ts.map +1 -0
- package/dist/types/logging.d.ts +33 -0
- package/dist/types/logging.d.ts.map +1 -0
- package/dist/types/render/index.d.ts +8 -0
- package/dist/types/render/index.d.ts.map +1 -0
- package/dist/types/render/renderer.d.ts +26 -0
- package/dist/types/render/renderer.d.ts.map +1 -0
- package/dist/types/search/index.d.ts +8 -0
- package/dist/types/search/index.d.ts.map +1 -0
- package/dist/types/search/search.d.ts +57 -0
- package/dist/types/search/search.d.ts.map +1 -0
- package/dist/types/topology/index.d.ts +8 -0
- package/dist/types/topology/index.d.ts.map +1 -0
- package/dist/types/topology/topology.d.ts +60 -0
- package/dist/types/topology/topology.d.ts.map +1 -0
- package/dist/types/types.d.ts +122 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +49 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@manya/weave` are documented here.
|
|
4
|
+
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Adheres to [SemVer](https://semver.org/).
|
|
5
|
+
|
|
6
|
+
## [1.0.0] — 2024-01-15
|
|
7
|
+
### Added
|
|
8
|
+
- Initial release.
|
|
9
|
+
- `Graph` class with directed/undirected modes, add/remove nodes & edges, O(1) adjacency queries, in/out degree, neighbors, predecessors, successors.
|
|
10
|
+
- Cycle detection (DFS-based for directed, union-find for undirected).
|
|
11
|
+
- Topological sort (Kahn's algorithm, deterministic).
|
|
12
|
+
- Connected components and BFS depths.
|
|
13
|
+
- Layout algorithms: `forceDirected` (Fruchterman-Reingold, seeded), `hierarchical` (longest-path layering), `radial` (concentric rings), `grid` (regular grid).
|
|
14
|
+
- Seeded PRNG (`mulberry32`) for deterministic layouts.
|
|
15
|
+
- Filtering: `filterByLabel`, `filterByType`, `filterByEdgeType`, `filterByComponent`, `filterByDepth`, `filterByProperty`, `filterNodes`, `filterEdges`.
|
|
16
|
+
- Search: `search` (exact text), `fuzzySearch` (Levenshtein token similarity), `bfsPath` (shortest unweighted), `dijkstra` (shortest weighted). Plus `levenshtein` and `similarity` primitives.
|
|
17
|
+
- Exporters: `toJSON`, `toDot` (Graphviz), `toMermaid` (Mermaid flowchart), `toSVG` (basic positional).
|
|
18
|
+
- `renderToSVG` with configurable `RenderConfig` (colors, sizes, labels, arrow markers).
|
|
19
|
+
- Topology tracking: `takeSnapshot`, `diffSnapshots`, `TopologyTracker` with rolling history.
|
|
20
|
+
- Interactive primitives: `SelectionModel`, `Viewport`, `applyViewport`, `inverseViewport`, `panTo`, `zoomAt`.
|
|
21
|
+
- Typed error hierarchy: `WeaveError`, `GraphError`, `LayoutError`, `ExportError`.
|
|
22
|
+
- Structured logging with secret scrubbing (`ConsoleLogger`, `SilentLogger`).
|
|
23
|
+
- Comprehensive unit test suite (105 tests).
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
Copyright 2024 Manya Hael Foundation. All rights reserved.
|
|
7
|
+
|
|
8
|
+
Conceived, directed, and owned by Uviwe Menyiwe (Azura Daemon),
|
|
9
|
+
founder of the Manya Hael Foundation.
|
|
10
|
+
|
|
11
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
you may not use this file except in compliance with the License.
|
|
13
|
+
You may obtain a copy of the License at
|
|
14
|
+
|
|
15
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
|
|
17
|
+
Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
See the License for the specific language governing permissions and
|
|
21
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# @manya/weave
|
|
2
|
+
|
|
3
|
+
> Interactive visualization substrate for the MANYA Intelligence OS — dependency graphs, knowledge graphs, event flows, architecture diagrams, live system topology, and pan/zoom exploration with multi-format export.
|
|
4
|
+
|
|
5
|
+
`@manya/weave` is the visualization engine of the **MANYA Intelligence OS** — a sovereign, modular, local-first intelligence operating system conceived, directed, and owned by **Uviwe Menyiwe (Azura Daemon)**, founder of the **Manya Hael Foundation**.
|
|
6
|
+
|
|
7
|
+
The package provides an in-memory directed/undirected graph model with cycle detection and topological sort, four deterministic layout algorithms (force-directed, hierarchical, radial, grid), graph filtering by label/type/component/depth, text and fuzzy search with BFS and Dijkstra path finding, export to JSON / Graphviz DOT / Mermaid / SVG, a configurable SVG renderer with arrow markers and labels, a live topology tracker with structural diffing, and interactive primitives (selection model, pan/zoom viewport).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Vision
|
|
12
|
+
|
|
13
|
+
The Manya Hael Foundation stewards the MANYA Intelligence OS as a long-horizon, mission-driven project. `@manya/weave` extends that sovereignty into the visualization domain: **your graphs, your layouts, your topology history — yours alone.**
|
|
14
|
+
|
|
15
|
+
- **Sovereign.** No network calls, no DOM dependency, no external rendering service. Pure TypeScript that runs in Node or in the browser.
|
|
16
|
+
- **Deterministic.** Every layout algorithm accepts a numeric seed and produces byte-identical output for byte-identical input.
|
|
17
|
+
- **Honest.** No magic "auto-layout oracle" — algorithms are simple, well-known, and explicit. Force-directed uses Fruchterman-Reingold with a seeded PRNG.
|
|
18
|
+
- **Exportable.** One graph, four formats (JSON, DOT, Mermaid, SVG) plus a full-featured SVG renderer.
|
|
19
|
+
- **Composable.** Filter, search, layout, render — each step is a pure function on an immutable graph snapshot.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
| Area | What you get |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| **Graph model** | `Graph` class with directed/undirected modes, add/remove nodes & edges, O(1) adjacency queries, in/out degree, neighbors, predecessors, successors. |
|
|
28
|
+
| **Algorithms** | Cycle detection (DFS for directed, union-find for undirected), topological sort (Kahn's, deterministic), connected components, BFS depths. |
|
|
29
|
+
| **Layouts** | `forceDirected` (Fruchterman-Reingold, seeded), `hierarchical` (longest-path layering), `radial` (concentric rings), `grid` (regular grid). All return `Map<nodeId, {x, y}>`. |
|
|
30
|
+
| **Filtering** | By label predicate, by node type, by edge type, by connected component, by BFS depth-from-root, by property predicate, plus generic `filterNodes`/`filterEdges`. |
|
|
31
|
+
| **Search** | Exact text search across labels/types/properties, fuzzy search with Levenshtein-based token scoring, BFS shortest path, Dijkstra weighted shortest path. |
|
|
32
|
+
| **Export** | `toJSON`, `toDot` (Graphviz), `toMermaid` (Mermaid flowchart), `toSVG` (basic positional). |
|
|
33
|
+
| **Render** | `renderToSVG` with `RenderConfig` (width, height, nodeRadius, fontSize, colors, showLabels), arrow markers for directed graphs, edge label rendering. |
|
|
34
|
+
| **Topology** | `TopologySnapshot`, `diffSnapshots` for added/removed nodes & edges, `TopologyTracker` with rolling history and `diff()`. |
|
|
35
|
+
| **Interactive** | `SelectionModel` (toggle/select/clear nodes & edges), `Viewport` (centerX/centerY/zoom), `applyViewport`/`inverseViewport`/`panTo`/`zoomAt`. |
|
|
36
|
+
| **Logging** | `Logger` interface, `ConsoleLogger` with secret-scrubbing, `SilentLogger`. |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install @manya/weave
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Requires Node.js 18+. No external runtime dependencies — only Node built-ins.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Quick start
|
|
51
|
+
|
|
52
|
+
### 1. Build and lay out a dependency graph
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { createGraph, hierarchical, renderToSVG } from '@manya/weave';
|
|
56
|
+
|
|
57
|
+
const graph = createGraph(
|
|
58
|
+
[
|
|
59
|
+
{ id: 'web', label: 'Web Client', type: 'service' },
|
|
60
|
+
{ id: 'api', label: 'API Gateway', type: 'service' },
|
|
61
|
+
{ id: 'auth', label: 'Auth Service', type: 'service' },
|
|
62
|
+
{ id: 'db', label: 'Database', type: 'db' },
|
|
63
|
+
],
|
|
64
|
+
[
|
|
65
|
+
{ id: 'e1', source: 'web', target: 'api', label: 'calls' },
|
|
66
|
+
{ id: 'e2', source: 'api', target: 'auth', label: 'verifies' },
|
|
67
|
+
{ id: 'e3', source: 'api', target: 'db', label: 'queries' },
|
|
68
|
+
],
|
|
69
|
+
true, // directed
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const layout = hierarchical(graph, { width: 800, height: 600 });
|
|
73
|
+
const svg = renderToSVG(graph, layout, { nodeColor: '#5b8def' });
|
|
74
|
+
console.log(svg); // full <svg>...</svg> document
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 2. Detect cycles and topologically sort
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { createGraph } from '@manya/weave';
|
|
81
|
+
|
|
82
|
+
const dag = createGraph(
|
|
83
|
+
[{ id: 'a', label: 'A' }, { id: 'b', label: 'B' }, { id: 'c', label: 'C' }],
|
|
84
|
+
[
|
|
85
|
+
{ id: 'e1', source: 'a', target: 'b' },
|
|
86
|
+
{ id: 'e2', source: 'b', target: 'c' },
|
|
87
|
+
],
|
|
88
|
+
true,
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
console.log(dag.hasCycle()); // false
|
|
92
|
+
console.log(dag.topologicalSort()); // ['a', 'b', 'c']
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 3. Filter, search, and find the shortest path
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
import { createGraph, filterByType, search, bfsPath, dijkstra } from '@manya/weave';
|
|
99
|
+
|
|
100
|
+
const graph = createGraph(
|
|
101
|
+
[
|
|
102
|
+
{ id: 'auth', label: 'Auth', type: 'service' },
|
|
103
|
+
{ id: 'billing', label: 'Billing', type: 'service' },
|
|
104
|
+
{ id: 'db', label: 'DB', type: 'db' },
|
|
105
|
+
],
|
|
106
|
+
[
|
|
107
|
+
{ id: 'e1', source: 'auth', target: 'db', weight: 1 },
|
|
108
|
+
{ id: 'e2', source: 'billing', target: 'db', weight: 5 },
|
|
109
|
+
],
|
|
110
|
+
false,
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
const services = filterByType(graph, 'service'); // 2 nodes, 0 edges (db dropped)
|
|
114
|
+
const hits = search(graph, 'DB'); // [{ nodeId: 'db', score: 1, matchedField: 'label' }]
|
|
115
|
+
const path = bfsPath(graph, 'auth', 'db'); // ['auth', 'db']
|
|
116
|
+
const shortest = dijkstra(graph, 'billing', 'db'); // { path: ['billing', 'db'], distance: 5 }
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 4. Track live topology over time
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
import { createGraph, TopologyTracker } from '@manya/weave';
|
|
123
|
+
|
|
124
|
+
const tracker = new TopologyTracker(10);
|
|
125
|
+
const v1 = createGraph(
|
|
126
|
+
[{ id: 'api', label: 'API' }, { id: 'db', label: 'DB' }],
|
|
127
|
+
[{ id: 'e1', source: 'api', target: 'db' }],
|
|
128
|
+
);
|
|
129
|
+
tracker.snapshot(v1, '2024-01-01T00:00:00Z');
|
|
130
|
+
|
|
131
|
+
const v2 = v1.clone();
|
|
132
|
+
v2.addNode({ id: 'cache', label: 'Cache' });
|
|
133
|
+
v2.addEdge({ id: 'e2', source: 'api', target: 'cache' });
|
|
134
|
+
tracker.snapshot(v2, '2024-01-01T00:01:00Z');
|
|
135
|
+
|
|
136
|
+
const diff = tracker.diff()!;
|
|
137
|
+
console.log(diff.addedNodes.map(n => n.id)); // ['cache']
|
|
138
|
+
console.log(diff.addedEdges.map(e => e.id)); // ['e2']
|
|
139
|
+
console.log(diff.removedNodes); // []
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 5. Export to Graphviz DOT, Mermaid, and JSON
|
|
143
|
+
|
|
144
|
+
```ts
|
|
145
|
+
import { createGraph, toDot, toMermaid, toJSON } from '@manya/weave';
|
|
146
|
+
|
|
147
|
+
const g = createGraph(
|
|
148
|
+
[{ id: 'a', label: 'Alpha' }, { id: 'b', label: 'Beta' }],
|
|
149
|
+
[{ id: 'e1', source: 'a', target: 'b', label: 'calls' }],
|
|
150
|
+
true,
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
console.log(toDot(g)); // digraph G { ... "a" -> "b" [label="calls"]; }
|
|
154
|
+
console.log(toMermaid(g)); // flowchart TD \n a["Alpha"] \n b["Beta"] \n a -- "calls" --> b
|
|
155
|
+
console.log(toJSON(g)); // { "directed": true, "nodes": [...], "edges": [...] }
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Configuration
|
|
161
|
+
|
|
162
|
+
### `RenderConfig`
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
export interface RenderConfig {
|
|
166
|
+
width: number; // SVG width, default 800
|
|
167
|
+
height: number; // SVG height, default 600
|
|
168
|
+
nodeRadius: number; // node circle radius, default 18
|
|
169
|
+
fontSize: number; // label font size, default 12
|
|
170
|
+
nodeColor: string; // node fill, default '#6ba8d6'
|
|
171
|
+
edgeColor: string; // edge stroke, default '#888888'
|
|
172
|
+
backgroundColor: string; // canvas fill, default '#ffffff'
|
|
173
|
+
showLabels: boolean; // render node & edge labels, default true
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Pass a partial config to `renderToSVG` — unspecified fields fall back to `DEFAULT_RENDER_CONFIG` via `mergeRenderConfig`.
|
|
178
|
+
|
|
179
|
+
### Layout options
|
|
180
|
+
|
|
181
|
+
All layouts accept `{ width?, height?, padding? }`. Additionally:
|
|
182
|
+
|
|
183
|
+
| Function | Extra options |
|
|
184
|
+
| --- | --- |
|
|
185
|
+
| `forceDirected` | `iterations?`, `seed?`, `idealLength?`, `repulsion?` |
|
|
186
|
+
| `hierarchical` | `layerGap?`, `nodeGap?`, `root?` |
|
|
187
|
+
| `radial` | `root?`, `ringGap?` |
|
|
188
|
+
| `grid` | `columns?`, `cellWidth?`, `cellHeight?` |
|
|
189
|
+
|
|
190
|
+
### `Viewport`
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
export interface Viewport {
|
|
194
|
+
centerX: number;
|
|
195
|
+
centerY: number;
|
|
196
|
+
zoom: number; // must be > 0
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
`applyViewport(point, viewport)` returns `{ x: (point.x - centerX) * zoom, y: (point.y - centerY) * zoom }`. `inverseViewport` is the inverse. `panTo(graphPoint, screenPoint, zoom)` builds a viewport anchoring a graph point at a screen point. `zoomAt(viewport, anchorScreenPoint, factor)` zooms while keeping an anchor point fixed.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Extending
|
|
205
|
+
|
|
206
|
+
### Add a custom layout algorithm
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
import type { Graph } from '@manya/weave';
|
|
210
|
+
import type { Layout, Point } from '@manya/weave';
|
|
211
|
+
|
|
212
|
+
export function circular(graph: Graph, radius = 200): Layout {
|
|
213
|
+
const layout = new Map<string, Point>();
|
|
214
|
+
const ids = graph.nodes.map(n => n.id).sort();
|
|
215
|
+
const step = (2 * Math.PI) / ids.length;
|
|
216
|
+
ids.forEach((id, i) => {
|
|
217
|
+
layout.set(id, { x: radius * Math.cos(i * step), y: radius * Math.sin(i * step) });
|
|
218
|
+
});
|
|
219
|
+
return layout;
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Layouts return a plain `Map<NodeID, Point>`, so custom algorithms drop in seamlessly with `renderToSVG`, `toSVG`, and any downstream consumer.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Security notes
|
|
228
|
+
|
|
229
|
+
- **Local-only.** No data leaves the host process. No DOM, no network, no telemetry.
|
|
230
|
+
- **No secrets in logs.** `token`, `secret`, `apiKey`, `password`, `credentials`, `cookie` fields are scrubbed by `scrubMetadata`.
|
|
231
|
+
- **Safe SVG output.** `renderToSVG` and `toSVG` XML-escape all label text. Do not embed untrusted user input as raw SVG attributes without additional sanitization.
|
|
232
|
+
- **Reproducibility.** Identical inputs + identical seeds → identical outputs.
|
|
233
|
+
|
|
234
|
+
For threat models, see [SECURITY.md](./SECURITY.md) and the root [SECURITY.md](../../SECURITY.md).
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Documentation
|
|
239
|
+
|
|
240
|
+
- [docs/API.md](./docs/API.md) — full TypeScript API reference.
|
|
241
|
+
- [CHANGELOG.md](./CHANGELOG.md) — release history.
|
|
242
|
+
- [CONTRIBUTING.md](./CONTRIBUTING.md) — package-specific contributor notes.
|
|
243
|
+
- [SECURITY.md](./SECURITY.md) — package-specific security surface.
|
|
244
|
+
- [LICENSE](./LICENSE) — Apache-2.0.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## License
|
|
249
|
+
|
|
250
|
+
Apache-2.0. Copyright 2024 Manya Hael Foundation. All rights reserved.
|
|
251
|
+
|
|
252
|
+
Conceived, directed, and owned by **Uviwe Menyiwe (Azura Daemon)**, founder of the Manya Hael Foundation.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{ConsoleLogger:()=>ConsoleLogger,DEFAULT_RENDER_CONFIG:()=>DEFAULT_RENDER_CONFIG,DEFAULT_VIEWPORT:()=>DEFAULT_VIEWPORT,ExportError:()=>ExportError,Graph:()=>Graph,GraphError:()=>GraphError,IDENTITY_VIEWPORT:()=>IDENTITY_VIEWPORT,LayoutError:()=>LayoutError,SCRUBBED_FIELD_NAMES:()=>SCRUBBED_FIELD_NAMES,SelectionModel:()=>SelectionModel,SilentLogger:()=>SilentLogger,TopologyTracker:()=>TopologyTracker,WeaveError:()=>WeaveError,applyViewport:()=>applyViewport,bfsPath:()=>bfsPath,createGraph:()=>createGraph,diffSnapshots:()=>diffSnapshots,dijkstra:()=>dijkstra,filterByComponent:()=>filterByComponent,filterByDepth:()=>filterByDepth,filterByEdgeType:()=>filterByEdgeType,filterByLabel:()=>filterByLabel,filterByProperty:()=>filterByProperty,filterByType:()=>filterByType,filterEdges:()=>filterEdges,filterNodes:()=>filterNodes,forceDirected:()=>forceDirected,fuzzySearch:()=>fuzzySearch,grid:()=>grid,hierarchical:()=>hierarchical,inverseViewport:()=>inverseViewport,levenshtein:()=>levenshtein,mergeRenderConfig:()=>mergeRenderConfig,mulberry32:()=>mulberry32,panTo:()=>panTo,radial:()=>radial,renderToSVG:()=>renderToSVG,scrubMetadata:()=>scrubMetadata,search:()=>search,shouldScrubField:()=>shouldScrubField,similarity:()=>similarity,takeSnapshot:()=>takeSnapshot,toDot:()=>toDot,toJSON:()=>toJSON,toMermaid:()=>toMermaid,toSVG:()=>toSVG,zoomAt:()=>zoomAt});module.exports=__toCommonJS(src_exports);var WeaveError=class extends Error{code;cause;constructor(message,code,cause){super(message),this.name=new.target.name,this.code=code??"WEAVE_ERROR",cause!==void 0&&(this.cause=cause),Object.setPrototypeOf(this,new.target.prototype)}},GraphError=class extends WeaveError{constructor(message,cause){super(message,"GRAPH_ERROR",cause)}},LayoutError=class extends WeaveError{constructor(message,cause){super(message,"LAYOUT_ERROR",cause)}},ExportError=class extends WeaveError{constructor(message,cause){super(message,"EXPORT_ERROR",cause)}};var LEVEL_RANK={debug:10,info:20,warn:30,error:40,silent:100},SCRUBBED_FIELD_NAMES=["token","secret","apiKey","password","credentials","cookie"];function shouldScrubField(name){let lower=name.toLowerCase();for(let needle of SCRUBBED_FIELD_NAMES){let nl=needle.toLowerCase();if(lower===nl||lower.endsWith("_"+nl))return!0}return!1}function scrubMetadata(meta){if(meta==null||typeof meta!="object")return meta;if(Buffer.isBuffer(meta))return`[buffer:${meta.length}]`;if(meta instanceof Date)return meta.toISOString();if(Array.isArray(meta))return meta.map(scrubMetadata);let out={};for(let[k,v]of Object.entries(meta))out[k]=shouldScrubField(k)?"[redacted]":scrubMetadata(v);return out}var ConsoleLogger=class{constructor(level="info"){this.level=level;this.levelRank=LEVEL_RANK[level]??LEVEL_RANK.info}level;levelRank;debug(msg,meta){this.emit("debug",msg,meta)}info(msg,meta){this.emit("info",msg,meta)}warn(msg,meta){this.emit("warn",msg,meta)}error(msg,meta){this.emit("error",msg,meta)}emit(level,msg,meta){try{if(LEVEL_RANK[level]<this.levelRank)return;let entry={level,msg,ts:new Date().toISOString(),...meta?{meta:scrubMetadata(meta)}:{}},line=JSON.stringify(entry);level==="error"||level==="warn"?process.stderr.write(line+`
|
|
2
|
+
`):process.stdout.write(line+`
|
|
3
|
+
`)}catch{}}},SilentLogger=class{debug(){}info(){}warn(){}error(){}};var Graph=class _Graph{directed;nodesById=new Map;edgesById=new Map;outAdj=new Map;inAdj=new Map;constructor(directed=!1){this.directed=directed}addNode(node){if(!node||typeof node.id!="string")throw new GraphError("Node.id must be a string");if(this.nodesById.has(node.id))throw new GraphError(`Node already exists: ${node.id}`);return this.nodesById.set(node.id,{...node}),this.outAdj.set(node.id,new Set),this.inAdj.set(node.id,new Set),this}addNodes(nodes){for(let n of nodes)this.addNode(n);return this}removeNode(id){if(!this.nodesById.has(id))return this;let incident=[];for(let e of this.edgesById.values())(e.source===id||e.target===id)&&incident.push(e.id);for(let eid of incident)this.removeEdge(eid);return this.nodesById.delete(id),this.outAdj.delete(id),this.inAdj.delete(id),this}getNode(id){return this.nodesById.get(id)}hasNode(id){return this.nodesById.has(id)}updateNode(id,patch){let existing=this.nodesById.get(id);if(!existing)throw new GraphError(`Node not found: ${id}`);return this.nodesById.set(id,{...existing,...patch,id}),this}addEdge(edge){if(!edge||typeof edge.id!="string")throw new GraphError("Edge.id must be a string");if(this.edgesById.has(edge.id))throw new GraphError(`Edge already exists: ${edge.id}`);if(!this.nodesById.has(edge.source))throw new GraphError(`Edge source node not found: ${edge.source}`);if(!this.nodesById.has(edge.target))throw new GraphError(`Edge target node not found: ${edge.target}`);if(edge.source===edge.target)throw new GraphError(`Self-loops are not supported: ${edge.id}`);return this.edgesById.set(edge.id,{...edge}),this.outAdj.get(edge.source).add(edge.target),this.inAdj.get(edge.target).add(edge.source),this.directed||(this.outAdj.get(edge.target).add(edge.source),this.inAdj.get(edge.source).add(edge.target)),this}addEdges(edges){for(let e of edges)this.addEdge(e);return this}removeEdge(id){let edge=this.edgesById.get(id);return edge?(this.edgesById.delete(id),this.outAdj.get(edge.source)?.delete(edge.target),this.inAdj.get(edge.target)?.delete(edge.source),this.directed||(this.outAdj.get(edge.target)?.delete(edge.source),this.inAdj.get(edge.source)?.delete(edge.target)),this):this}getEdge(id){return this.edgesById.get(id)}hasEdge(id){return this.edgesById.has(id)}get nodes(){return Array.from(this.nodesById.values())}get edges(){return Array.from(this.edgesById.values())}size(){return this.nodesById.size}edgeCount(){return this.edgesById.size}successors(id){let s=this.outAdj.get(id);return s?Array.from(s):[]}predecessors(id){let s=this.inAdj.get(id);return s?Array.from(s):[]}neighbors(id){let seen=new Set(this.successors(id));for(let p of this.predecessors(id))seen.add(p);return Array.from(seen)}outDegree(id){return this.outAdj.get(id)?.size??0}inDegree(id){return this.inAdj.get(id)?.size??0}degree(id){return this.directed?this.outDegree(id)+this.inDegree(id):this.outAdj.get(id)?.size??0}hasCycle(){return this.directed?this.hasCycleDirected():this.hasCycleUndirected()}hasCycleDirected(){let color=new Map;for(let id of this.nodesById.keys())color.set(id,0);let stack=[];for(let start of this.nodesById.keys())if(color.get(start)===0)for(color.set(start,1),stack.push([start,this.successors(start)[Symbol.iterator]()]);stack.length>0;){let top=stack[stack.length-1],next=top[1].next();if(next.done){color.set(top[0],2),stack.pop();continue}let w=next.value,cw=color.get(w);if(cw===1)return!0;cw===0&&(color.set(w,1),stack.push([w,this.successors(w)[Symbol.iterator]()]))}return!1}hasCycleUndirected(){let parent=new Map,find=x=>{let root=x;for(;parent.get(root)!==root;)root=parent.get(root);let cur=x;for(;parent.get(cur)!==root;){let next=parent.get(cur);parent.set(cur,root),cur=next}return root};for(let id of this.nodesById.keys())parent.set(id,id);for(let e of this.edgesById.values()){let ra=find(e.source),rb=find(e.target);if(ra===rb)return!0;parent.set(ra,rb)}return!1}topologicalSort(){if(!this.directed)throw new GraphError("topologicalSort requires a directed graph");if(this.hasCycle())throw new GraphError("Cannot topologically sort a graph with cycles");let inDeg=new Map;for(let id of this.nodesById.keys())inDeg.set(id,this.inDegree(id));let queue=[];for(let[id,d]of inDeg)d===0&&queue.push(id);queue.sort();let result=[];for(;queue.length>0;){let n=queue.shift();result.push(n);let succs=this.successors(n).sort();for(let s of succs){let d=(inDeg.get(s)??0)-1;if(inDeg.set(s,d),d===0){let lo=0,hi=queue.length;for(;lo<hi;){let mid=lo+hi>>1;queue[mid]<s?lo=mid+1:hi=mid}queue.splice(lo,0,s)}}}return result}findConnectedComponents(){let visited=new Set,components=[];for(let start of this.nodesById.keys()){if(visited.has(start))continue;let comp=[],stack=[start];for(visited.add(start);stack.length>0;){let n=stack.pop();comp.push(n);for(let nb of this.neighbors(n))visited.has(nb)||(visited.add(nb),stack.push(nb))}comp.sort(),components.push(comp)}return components.sort((a,b)=>a[0]<b[0]?-1:a[0]>b[0]?1:0),components}componentOf(id){if(!this.nodesById.has(id))return[];let visited=new Set([id]),stack=[id];for(;stack.length>0;){let n=stack.pop();for(let nb of this.neighbors(n))visited.has(nb)||(visited.add(nb),stack.push(nb))}return Array.from(visited).sort()}bfsDepths(start,maxDepth=1/0){let result=new Map;if(!this.nodesById.has(start))return result;result.set(start,0);let queue=[start];for(;queue.length>0;){let n=queue.shift(),d=result.get(n);if(!(d>=maxDepth))for(let nb of this.neighbors(n))result.has(nb)||(result.set(nb,d+1),queue.push(nb))}return result}clone(){let g=new _Graph(this.directed);return g.addNodes(this.nodes),g.addEdges(this.edges),g}};function createGraph(nodes,edges=[],directed=!1){let g=new Graph(directed);return g.addNodes(nodes),g.addEdges(edges),g}function mulberry32(seed){let a=seed>>>0;return function(){a|=0,a=a+1831565813|0;let t=Math.imul(a^a>>>15,1|a);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function assertNonEmpty(graph){if(graph.size()===0)throw new LayoutError("Cannot lay out an empty graph")}function initialPositions(graph,width,height,rng){let pos=new Map,ids=graph.nodes.map(n=>n.id).sort(),cols=Math.max(1,Math.ceil(Math.sqrt(ids.length))),cellW=width/(cols+1),cellH=height/(Math.ceil(ids.length/cols)+1);return ids.forEach((id,i)=>{let r=Math.floor(i/cols),c=i%cols,jx=(rng()-.5)*10,jy=(rng()-.5)*10;pos.set(id,{x:cellW*(c+1)+jx,y:cellH*(r+1)+jy})}),pos}function forceDirected(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,iterations=opts.iterations??300,seed=opts.seed??1,repulsion=opts.repulsion??1,idealLength=opts.idealLength??Math.min(width,height)/Math.max(2,Math.sqrt(graph.size())),rng=mulberry32(seed),pos=initialPositions(graph,width,height,rng),ids=graph.nodes.map(n=>n.id).sort(),edges=graph.edges,cool=width/10;for(let iter=0;iter<iterations;iter++){let disp=new Map;for(let id of ids)disp.set(id,{x:0,y:0});for(let i=0;i<ids.length;i++){let v=ids[i],pv=pos.get(v);for(let j=i+1;j<ids.length;j++){let u=ids[j],pu=pos.get(u),dx=pv.x-pu.x,dy=pv.y-pu.y,dist=Math.sqrt(dx*dx+dy*dy);dist<.01&&(dist=.01,dx=(i-j)*.01+.01,dy=(j-i)*.01+.01);let force=repulsion*idealLength*idealLength/(dist*dist),fx=dx/dist*force,fy=dy/dist*force;disp.get(v).x+=fx,disp.get(v).y+=fy,disp.get(u).x-=fx,disp.get(u).y-=fy}}for(let e of edges){let a=pos.get(e.source),b=pos.get(e.target);if(!a||!b)continue;let dx=a.x-b.x,dy=a.y-b.y,dist=Math.sqrt(dx*dx+dy*dy);dist<.01&&(dist=.01,dx=.01,dy=0);let force=dist*dist/idealLength,fx=dx/dist*force,fy=dy/dist*force;disp.has(e.source)&&(disp.get(e.source).x-=fx,disp.get(e.source).y-=fy),disp.has(e.target)&&(disp.get(e.target).x+=fx,disp.get(e.target).y+=fy)}for(let id of ids){let d=disp.get(id),dlen=Math.sqrt(d.x*d.x+d.y*d.y);if(dlen<1e-6)continue;let limited=Math.min(dlen,cool),p=pos.get(id),nx=p.x+d.x/dlen*limited,ny=p.y+d.y/dlen*limited;pos.set(id,{x:Math.max(20,Math.min(width-20,nx)),y:Math.max(20,Math.min(height-20,ny))})}cool=Math.max(cool*.95,1)}return pos}function hierarchical(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,layerGap=opts.layerGap??80,nodeGap=opts.nodeGap??80,padding=opts.padding??40,layer=new Map,ids=graph.nodes.map(n=>n.id).sort(),roots;opts.root?roots=[opts.root]:(roots=ids.filter(id=>graph.inDegree(id)===0),roots.length===0&&(roots=[ids[0]]));for(let id of ids)layer.set(id,0);for(let pass=0;pass<ids.length+1;pass++){let changed=!1;for(let e of graph.edges){let a=layer.get(e.source)??0,b=layer.get(e.target)??0;a+1>b&&(layer.set(e.target,a+1),changed=!0)}if(!changed)break}if(!graph.directed){for(let id of ids)layer.set(id,0);let queue=[...roots],visited=new Set(roots);for(;queue.length>0;){let n=queue.shift(),d=layer.get(n);for(let nb of graph.neighbors(n))visited.has(nb)||(visited.add(nb),layer.set(nb,d+1),queue.push(nb))}for(let id of ids)layer.has(id)||layer.set(id,0)}let maxLayer=Math.max(...layer.values(),0),layerNodes=Array.from({length:maxLayer+1},()=>[]);for(let id of ids)layerNodes[layer.get(id)].push(id);for(let ln of layerNodes)ln.sort();let pos=new Map;for(let l=0;l<layerNodes.length;l++){let nodes=layerNodes[l],totalW=(nodes.length-1)*nodeGap,startX=(width-totalW)/2;for(let i=0;i<nodes.length;i++)pos.set(nodes[i],{x:startX+i*nodeGap,y:padding+l*layerGap})}return pos}function radial(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,ringGap=opts.ringGap??100,padding=opts.padding??40,ids=graph.nodes.map(n=>n.id).sort(),root=opts.root??ids[0];if(!graph.hasNode(root))throw new LayoutError(`Radial root not found: ${root}`);let depth=new Map;depth.set(root,0);let queue=[root];for(;queue.length>0;){let n=queue.shift(),d=depth.get(n);for(let nb of graph.neighbors(n))depth.has(nb)||(depth.set(nb,d+1),queue.push(nb))}let maxDepth=depth.size>0?Math.max(...depth.values()):0;for(let id of ids)depth.has(id)||depth.set(id,maxDepth+1);let cx=width/2,cy=height/2,pos=new Map;pos.set(root,{x:cx,y:cy});let byDepth=new Map;for(let[id,d]of depth)id!==root&&(byDepth.has(d)||byDepth.set(d,[]),byDepth.get(d).push(id));for(let arr of byDepth.values())arr.sort();for(let[d,nodes]of byDepth){let r=d*ringGap,angleStep=2*Math.PI/nodes.length;for(let i=0;i<nodes.length;i++){let angle=i*angleStep;pos.set(nodes[i],{x:cx+r*Math.cos(angle),y:cy+r*Math.sin(angle)})}}for(let[id,p]of pos)p.x=Math.max(padding,Math.min(width-padding,p.x)),p.y=Math.max(padding,Math.min(height-padding,p.y)),pos.set(id,p);return pos}function grid(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,cellWidth=opts.cellWidth??80,cellHeight=opts.cellHeight??80,padding=opts.padding??40,ids=graph.nodes.map(n2=>n2.id).sort(),n=ids.length,columns=opts.columns??Math.max(1,Math.ceil(Math.sqrt(n))),pos=new Map;for(let i=0;i<n;i++){let r=Math.floor(i/columns),c=i%columns;pos.set(ids[i],{x:padding+c*cellWidth,y:padding+r*cellHeight})}return pos}function subgraph(graph,keepIds){let out=new Graph(graph.directed),nodes=graph.nodes.filter(n=>keepIds.has(n.id));out.addNodes(nodes);let edges=graph.edges.filter(e=>keepIds.has(e.source)&&keepIds.has(e.target));return out.addEdges(edges),out}function filterByLabel(graph,predicate){let keep=new Set;for(let n of graph.nodes)predicate(n.label)&&keep.add(n.id);return subgraph(graph,keep)}function filterByType(graph,type){let keep=new Set;for(let n of graph.nodes)(type===void 0&&n.type===void 0||n.type===type)&&keep.add(n.id);return subgraph(graph,keep)}function filterByEdgeType(graph,type){let out=new Graph(graph.directed);out.addNodes(graph.nodes);for(let e of graph.edges)(type===void 0&&e.type===void 0||e.type===type)&&out.addEdge(e);return out}function filterByComponent(graph,nodeId){let comp=graph.componentOf(nodeId);return subgraph(graph,new Set(comp))}function filterByDepth(graph,rootId,maxDepth){if(!graph.hasNode(rootId))return new Graph(graph.directed);let depths=graph.bfsDepths(rootId,maxDepth);return subgraph(graph,new Set(depths.keys()))}function filterByProperty(graph,predicate){let keep=new Set;for(let n of graph.nodes)predicate(n.properties)&&keep.add(n.id);return subgraph(graph,keep)}function filterNodes(graph,predicate){let keep=new Set;for(let n of graph.nodes)predicate(n)&&keep.add(n.id);return subgraph(graph,keep)}function filterEdges(graph,predicate){let out=new Graph(graph.directed);out.addNodes(graph.nodes);for(let e of graph.edges)predicate(e)&&out.addEdge(e);return out}function normalize(s){return s.toLowerCase().replace(/[^a-z0-9\s]/g," ").replace(/\s+/g," ").trim()}function levenshtein(a,b){let m=a.length,n=b.length;if(m===0)return n;if(n===0)return m;let prev=new Array(n+1),curr=new Array(n+1);for(let j=0;j<=n;j++)prev[j]=j;for(let i=1;i<=m;i++){curr[0]=i;for(let j=1;j<=n;j++){let cost=a.charCodeAt(i-1)===b.charCodeAt(j-1)?0:1;curr[j]=Math.min(prev[j]+1,curr[j-1]+1,prev[j-1]+cost)}for(let j=0;j<=n;j++)prev[j]=curr[j]}return prev[n]}function similarity(a,b){return a.length===0&&b.length===0?1:1-levenshtein(a,b)/Math.max(a.length,b.length)}function fieldsOf(node){let out=[["label",node.label]];if(node.type&&out.push(["type",node.type]),node.properties)for(let[k,v]of Object.entries(node.properties))(typeof v=="string"||typeof v=="number"||typeof v=="boolean")&&out.push([k,String(v)]);return out}function search(graph,query){let q=normalize(query);if(q.length===0)return[];let results=[];for(let node of graph.nodes)for(let[field,value]of fieldsOf(node)){let nv=normalize(value);if(nv===q){results.push({nodeId:node.id,score:1,matchedField:field});break}if(nv.includes(q)){let score=q.length/nv.length;results.push({nodeId:node.id,score,matchedField:field});break}}return results.sort((a,b)=>b.score-a.score||(a.nodeId<b.nodeId?-1:1)),results}function fuzzySearch(graph,query,threshold=.3){let q=normalize(query);if(q.length===0)return[];let results=[];for(let node of graph.nodes){let bestScore=0,bestField="";for(let[field,value]of fieldsOf(node)){let nv=normalize(value);if(nv.length===0)continue;let qTokens=q.split(" ").filter(Boolean),vTokens=nv.split(" ").filter(Boolean),acc=0,count=0;for(let qt of qTokens){let best=0;for(let vt of vTokens){let s=similarity(qt,vt);s>best&&(best=s)}acc+=best,count++}let tokenScore=count>0?acc/count:0,wholeScore=similarity(q,nv),fieldScore=Math.max(tokenScore,wholeScore);fieldScore>bestScore&&(bestScore=fieldScore,bestField=field)}bestScore>=threshold&&results.push({nodeId:node.id,score:bestScore,matchedField:bestField})}return results.sort((a,b)=>b.score-a.score||(a.nodeId<b.nodeId?-1:1)),results}function bfsPath(graph,start,target){if(!graph.hasNode(start)||!graph.hasNode(target))return null;if(start===target)return[start];let prev=new Map;prev.set(start,null);let queue=[start];for(;queue.length>0;){let n=queue.shift();for(let nb of graph.neighbors(n))if(!prev.has(nb)){if(prev.set(nb,n),nb===target){let path=[],cur=nb;for(;cur!==null;)path.unshift(cur),cur=prev.get(cur)??null;return path}queue.push(nb)}}return null}function dijkstra(graph,start,target){if(!graph.hasNode(start)||!graph.hasNode(target))return{path:null,distance:1/0};if(start===target)return{path:[start],distance:0};let adj=new Map;for(let id of graph.nodes.map(n=>n.id))adj.set(id,[]);for(let e of graph.edges){let w=typeof e.weight=="number"&&e.weight>=0?e.weight:1;adj.get(e.source).push({to:e.target,w}),graph.directed||adj.get(e.target).push({to:e.source,w})}let dist=new Map,prev=new Map;for(let id of adj.keys())dist.set(id,1/0),prev.set(id,null);dist.set(start,0);let visited=new Set;for(;visited.size<dist.size;){let u=null,best=1/0;for(let[id,d]of dist)!visited.has(id)&&d<best&&(best=d,u=id);if(u===null||best===1/0||u===target)break;visited.add(u);for(let{to,w}of adj.get(u)??[]){if(visited.has(to))continue;let alt=(dist.get(u)??1/0)+w;alt<(dist.get(to)??1/0)&&(dist.set(to,alt),prev.set(to,u))}}if(!isFinite(dist.get(target)??1/0))return{path:null,distance:1/0};let path=[],cur=target;for(;cur!==null;)path.unshift(cur),cur=prev.get(cur)??null;return{path,distance:dist.get(target)}}function jsonString(s){return JSON.stringify(s)}function isBareDotId(s){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(s)}function escapeMermaid(s){return s.replace(/"/g,"#quot;")}function toJSON(graph){return JSON.stringify({directed:graph.directed,nodes:graph.nodes,edges:graph.edges},null,2)}function toDot(graph,name="G"){let lines=[];lines.push(`${graph.directed?"digraph":"graph"} ${name} {`);for(let n of graph.nodes){let attrs=[`label=${jsonString(n.label)}`];n.type&&attrs.push(`type=${jsonString(n.type)}`),lines.push(` ${isBareDotId(n.id)?n.id:jsonString(n.id)} [${attrs.join(", ")}];`)}let op=graph.directed?"->":"--";for(let e of graph.edges){let s=isBareDotId(e.source)?e.source:jsonString(e.source),t=isBareDotId(e.target)?e.target:jsonString(e.target),attrs=[];e.label&&attrs.push(`label=${jsonString(e.label)}`),e.type&&attrs.push(`type=${jsonString(e.type)}`),typeof e.weight=="number"&&attrs.push(`weight=${e.weight}`);let attrStr=attrs.length>0?` [${attrs.join(", ")}]`:"";lines.push(` ${s} ${op} ${t}${attrStr};`)}return lines.push("}"),lines.join(`
|
|
4
|
+
`)}function toMermaid(graph){let lines=[`flowchart ${graph.directed?"TD":"LR"}`],safeId=id=>id.replace(/[^A-Za-z0-9_]/g,"_"),idMap=new Map;for(let n of graph.nodes){let sid=safeId(n.id);idMap.set(n.id,sid),lines.push(` ${sid}["${escapeMermaid(n.label)}"]`)}for(let e of graph.edges){let s=idMap.get(e.source),t=idMap.get(e.target);e.label?lines.push(` ${s} -- "${escapeMermaid(e.label)}" --> ${t}`):lines.push(` ${s} --> ${t}`)}return lines.join(`
|
|
5
|
+
`)}function toSVG(graph,layout,width=800,height=600){if(!layout)throw new ExportError("toSVG requires a layout");let positions=[];for(let n of graph.nodes){let p=layout.get(n.id);if(!p)throw new ExportError(`Layout missing position for node: ${n.id}`);positions.push({id:n.id,x:p.x,y:p.y})}let minX=Math.min(0,...positions.map(p=>p.x))-30,minY=Math.min(0,...positions.map(p=>p.y))-30,maxX=Math.max(width,...positions.map(p=>p.x))+30,maxY=Math.max(height,...positions.map(p=>p.y))+30,w=maxX-minX,h=maxY-minY,lines=[];lines.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="${minX} ${minY} ${w} ${h}">`),lines.push(`<rect x="${minX}" y="${minY}" width="${w}" height="${h}" fill="white"/>`);for(let e of graph.edges){let a=layout.get(e.source),b=layout.get(e.target);!a||!b||lines.push(`<line x1="${a.x}" y1="${a.y}" x2="${b.x}" y2="${b.y}" stroke="black" stroke-width="1"/>`)}for(let p of positions){let label=graph.getNode(p.id)?.label??p.id;lines.push(`<circle cx="${p.x}" cy="${p.y}" r="15" fill="#eee" stroke="black" stroke-width="1"/>`),lines.push(`<text x="${p.x}" y="${p.y-22}" font-size="11" font-family="sans-serif" text-anchor="middle" fill="black">${escapeXml(label)}</text>`)}return lines.push("</svg>"),lines.join(`
|
|
6
|
+
`)}function escapeXml(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var DEFAULT_RENDER_CONFIG={width:800,height:600,nodeRadius:18,fontSize:12,nodeColor:"#6ba8d6",edgeColor:"#888888",backgroundColor:"#ffffff",showLabels:!0};function mergeRenderConfig(partial){return partial?{...DEFAULT_RENDER_CONFIG,...partial}:{...DEFAULT_RENDER_CONFIG}}function escapeXml2(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function renderToSVG(graph,layout,config){let cfg=mergeRenderConfig(config);if(!layout)throw new ExportError("renderToSVG requires a layout");for(let n of graph.nodes)if(!layout.has(n.id))throw new ExportError(`Layout missing position for node: ${n.id}`);let lines=[];lines.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${cfg.width}" height="${cfg.height}" viewBox="0 0 ${cfg.width} ${cfg.height}">`),lines.push(`<rect x="0" y="0" width="${cfg.width}" height="${cfg.height}" fill="${escapeXml2(cfg.backgroundColor)}"/>`),graph.directed&&(lines.push("<defs>"),lines.push(`<marker id="weave-arrow" markerWidth="10" markerHeight="10" refX="${cfg.nodeRadius+2}" refY="3" orient="auto" markerUnits="userSpaceOnUse">`),lines.push(`<path d="M0,0 L0,6 L6,3 z" fill="${escapeXml2(cfg.edgeColor)}"/>`),lines.push("</marker>"),lines.push("</defs>"));for(let e of graph.edges){let a=layout.get(e.source),b=layout.get(e.target),dx=b.x-a.x,dy=b.y-a.y,len=Math.hypot(dx,dy),x2=b.x,y2=b.y;if(len>0){let ux=dx/len,uy=dy/len;x2=b.x-ux*cfg.nodeRadius,y2=b.y-uy*cfg.nodeRadius}let markerAttr=graph.directed?' marker-end="url(#weave-arrow)"':"";if(lines.push(`<line x1="${a.x}" y1="${a.y}" x2="${x2}" y2="${y2}" stroke="${escapeXml2(cfg.edgeColor)}" stroke-width="1.5"${markerAttr}/>`),cfg.showLabels&&e.label){let mx=(a.x+b.x)/2,my=(a.y+b.y)/2-4;lines.push(`<text x="${mx}" y="${my}" font-size="${Math.max(8,cfg.fontSize-2)}" font-family="sans-serif" text-anchor="middle" fill="${escapeXml2(cfg.edgeColor)}">${escapeXml2(e.label)}</text>`)}}for(let n of graph.nodes){let p=layout.get(n.id);if(lines.push(`<circle cx="${p.x}" cy="${p.y}" r="${cfg.nodeRadius}" fill="${escapeXml2(cfg.nodeColor)}" stroke="black" stroke-width="1"/>`),cfg.showLabels){let labelY=p.y-cfg.nodeRadius-4;lines.push(`<text x="${p.x}" y="${labelY}" font-size="${cfg.fontSize}" font-family="sans-serif" text-anchor="middle" fill="black">${escapeXml2(n.label)}</text>`)}}return lines.push("</svg>"),lines.join(`
|
|
7
|
+
`)}function takeSnapshot(graph,takenAt=new Date().toISOString()){let nodes=graph.nodes.map(n=>({...n,properties:n.properties?{...n.properties}:void 0})),edges=graph.edges.map(e=>({...e,properties:e.properties?{...e.properties}:void 0}));return{takenAt,graph:createGraph(nodes,edges,graph.directed)}}function nodeIds(s){return new Set(s.graph.nodes.map(n=>n.id))}function edgeIds(s){return new Set(s.graph.edges.map(e=>e.id))}function diffSnapshots(a,b){let aNodes=nodeIds(a),bNodes=nodeIds(b),aEdges=edgeIds(a),bEdges=edgeIds(b),addedNodes=b.graph.nodes.filter(n=>!aNodes.has(n.id)),removedNodes=a.graph.nodes.map(n=>n.id).filter(id=>!bNodes.has(id)),addedEdges=b.graph.edges.filter(e=>!aEdges.has(e.id)),removedEdges=a.graph.edges.map(e=>e.id).filter(id=>!bEdges.has(id));return{addedNodes,removedNodes,addedEdges,removedEdges}}var TopologyTracker=class{maxHistory;history=[];constructor(maxHistory=10){if(maxHistory<1)throw new RangeError("maxHistory must be >= 1");this.maxHistory=maxHistory}snapshot(graph,takenAt=new Date().toISOString()){let snap=takeSnapshot(graph,takenAt);for(this.history.push(snap);this.history.length>this.maxHistory;)this.history.shift();return snap}snapshots(){return this.history.slice()}current(){return this.history.length>0?this.history[this.history.length-1]:void 0}previous(){return this.history.length>=2?this.history[this.history.length-2]:void 0}diff(){let prev=this.previous(),curr=this.current();return!prev||!curr?null:diffSnapshots(prev,curr)}diffAt(i,j){return i<0||j<0||i>=this.history.length||j>=this.history.length?null:diffSnapshots(this.history[i],this.history[j])}reset(){this.history=[]}};var DEFAULT_VIEWPORT={centerX:0,centerY:0,zoom:1},SelectionModel=class{selectedNodes=new Set;selectedEdges=new Set;selectNode(id){return this.selectedNodes.add(id),this}selectEdge(id){return this.selectedEdges.add(id),this}deselectNode(id){return this.selectedNodes.delete(id),this}deselectEdge(id){return this.selectedEdges.delete(id),this}toggleNode(id){return this.selectedNodes.has(id)?(this.selectedNodes.delete(id),!1):(this.selectedNodes.add(id),!0)}toggleEdge(id){return this.selectedEdges.has(id)?(this.selectedEdges.delete(id),!1):(this.selectedEdges.add(id),!0)}isNodeSelected(id){return this.selectedNodes.has(id)}isEdgeSelected(id){return this.selectedEdges.has(id)}selectedNodeIds(){return Array.from(this.selectedNodes).sort()}selectedEdgeIds(){return Array.from(this.selectedEdges).sort()}nodeCount(){return this.selectedNodes.size}edgeCount(){return this.selectedEdges.size}clear(){return this.selectedNodes.clear(),this.selectedEdges.clear(),this}isEmpty(){return this.selectedNodes.size===0&&this.selectedEdges.size===0}setSelection(nodes,edges=[]){this.clear();for(let n of nodes)this.selectedNodes.add(n);for(let e of edges)this.selectedEdges.add(e);return this}toJSON(){return{nodes:this.selectedNodeIds(),edges:this.selectedEdgeIds()}}},IDENTITY_VIEWPORT=DEFAULT_VIEWPORT;function validateViewport(v){if(!Number.isFinite(v.centerX)||!Number.isFinite(v.centerY))throw new RangeError("Viewport.centerX/centerY must be finite");if(!Number.isFinite(v.zoom)||v.zoom<=0)throw new RangeError("Viewport.zoom must be a positive finite number")}function applyViewport(point,viewport){return validateViewport(viewport),{x:(point.x-viewport.centerX)*viewport.zoom,y:(point.y-viewport.centerY)*viewport.zoom}}function inverseViewport(point,viewport){return validateViewport(viewport),{x:point.x/viewport.zoom+viewport.centerX,y:point.y/viewport.zoom+viewport.centerY}}function panTo(graphPoint,screenPoint,zoom){if(!Number.isFinite(zoom)||zoom<=0)throw new RangeError("zoom must be positive");return{centerX:graphPoint.x-screenPoint.x/zoom,centerY:graphPoint.y-screenPoint.y/zoom,zoom}}function zoomAt(viewport,anchor,factor){if(validateViewport(viewport),!Number.isFinite(factor)||factor<=0)throw new RangeError("factor must be positive");let newZoom=viewport.zoom*factor,graphAnchor=inverseViewport(anchor,viewport);return panTo(graphAnchor,anchor,newZoom)}0&&(module.exports={ConsoleLogger,DEFAULT_RENDER_CONFIG,DEFAULT_VIEWPORT,ExportError,Graph,GraphError,IDENTITY_VIEWPORT,LayoutError,SCRUBBED_FIELD_NAMES,SelectionModel,SilentLogger,TopologyTracker,WeaveError,applyViewport,bfsPath,createGraph,diffSnapshots,dijkstra,filterByComponent,filterByDepth,filterByEdgeType,filterByLabel,filterByProperty,filterByType,filterEdges,filterNodes,forceDirected,fuzzySearch,grid,hierarchical,inverseViewport,levenshtein,mergeRenderConfig,mulberry32,panTo,radial,renderToSVG,scrubMetadata,search,shouldScrubField,similarity,takeSnapshot,toDot,toJSON,toMermaid,toSVG,zoomAt});
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts", "../../src/errors.ts", "../../src/logging.ts", "../../src/graph/graph.ts", "../../src/layout/layout.ts", "../../src/filter/filter.ts", "../../src/search/search.ts", "../../src/export/exporter.ts", "../../src/render/renderer.ts", "../../src/topology/topology.ts", "../../src/interactive/interactive.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["n", "escapeXml"]
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var WeaveError=class extends Error{code;cause;constructor(message,code,cause){super(message),this.name=new.target.name,this.code=code??"WEAVE_ERROR",cause!==void 0&&(this.cause=cause),Object.setPrototypeOf(this,new.target.prototype)}},GraphError=class extends WeaveError{constructor(message,cause){super(message,"GRAPH_ERROR",cause)}},LayoutError=class extends WeaveError{constructor(message,cause){super(message,"LAYOUT_ERROR",cause)}},ExportError=class extends WeaveError{constructor(message,cause){super(message,"EXPORT_ERROR",cause)}};var LEVEL_RANK={debug:10,info:20,warn:30,error:40,silent:100},SCRUBBED_FIELD_NAMES=["token","secret","apiKey","password","credentials","cookie"];function shouldScrubField(name){let lower=name.toLowerCase();for(let needle of SCRUBBED_FIELD_NAMES){let nl=needle.toLowerCase();if(lower===nl||lower.endsWith("_"+nl))return!0}return!1}function scrubMetadata(meta){if(meta==null||typeof meta!="object")return meta;if(Buffer.isBuffer(meta))return`[buffer:${meta.length}]`;if(meta instanceof Date)return meta.toISOString();if(Array.isArray(meta))return meta.map(scrubMetadata);let out={};for(let[k,v]of Object.entries(meta))out[k]=shouldScrubField(k)?"[redacted]":scrubMetadata(v);return out}var ConsoleLogger=class{constructor(level="info"){this.level=level;this.levelRank=LEVEL_RANK[level]??LEVEL_RANK.info}level;levelRank;debug(msg,meta){this.emit("debug",msg,meta)}info(msg,meta){this.emit("info",msg,meta)}warn(msg,meta){this.emit("warn",msg,meta)}error(msg,meta){this.emit("error",msg,meta)}emit(level,msg,meta){try{if(LEVEL_RANK[level]<this.levelRank)return;let entry={level,msg,ts:new Date().toISOString(),...meta?{meta:scrubMetadata(meta)}:{}},line=JSON.stringify(entry);level==="error"||level==="warn"?process.stderr.write(line+`
|
|
2
|
+
`):process.stdout.write(line+`
|
|
3
|
+
`)}catch{}}},SilentLogger=class{debug(){}info(){}warn(){}error(){}};var Graph=class _Graph{directed;nodesById=new Map;edgesById=new Map;outAdj=new Map;inAdj=new Map;constructor(directed=!1){this.directed=directed}addNode(node){if(!node||typeof node.id!="string")throw new GraphError("Node.id must be a string");if(this.nodesById.has(node.id))throw new GraphError(`Node already exists: ${node.id}`);return this.nodesById.set(node.id,{...node}),this.outAdj.set(node.id,new Set),this.inAdj.set(node.id,new Set),this}addNodes(nodes){for(let n of nodes)this.addNode(n);return this}removeNode(id){if(!this.nodesById.has(id))return this;let incident=[];for(let e of this.edgesById.values())(e.source===id||e.target===id)&&incident.push(e.id);for(let eid of incident)this.removeEdge(eid);return this.nodesById.delete(id),this.outAdj.delete(id),this.inAdj.delete(id),this}getNode(id){return this.nodesById.get(id)}hasNode(id){return this.nodesById.has(id)}updateNode(id,patch){let existing=this.nodesById.get(id);if(!existing)throw new GraphError(`Node not found: ${id}`);return this.nodesById.set(id,{...existing,...patch,id}),this}addEdge(edge){if(!edge||typeof edge.id!="string")throw new GraphError("Edge.id must be a string");if(this.edgesById.has(edge.id))throw new GraphError(`Edge already exists: ${edge.id}`);if(!this.nodesById.has(edge.source))throw new GraphError(`Edge source node not found: ${edge.source}`);if(!this.nodesById.has(edge.target))throw new GraphError(`Edge target node not found: ${edge.target}`);if(edge.source===edge.target)throw new GraphError(`Self-loops are not supported: ${edge.id}`);return this.edgesById.set(edge.id,{...edge}),this.outAdj.get(edge.source).add(edge.target),this.inAdj.get(edge.target).add(edge.source),this.directed||(this.outAdj.get(edge.target).add(edge.source),this.inAdj.get(edge.source).add(edge.target)),this}addEdges(edges){for(let e of edges)this.addEdge(e);return this}removeEdge(id){let edge=this.edgesById.get(id);return edge?(this.edgesById.delete(id),this.outAdj.get(edge.source)?.delete(edge.target),this.inAdj.get(edge.target)?.delete(edge.source),this.directed||(this.outAdj.get(edge.target)?.delete(edge.source),this.inAdj.get(edge.source)?.delete(edge.target)),this):this}getEdge(id){return this.edgesById.get(id)}hasEdge(id){return this.edgesById.has(id)}get nodes(){return Array.from(this.nodesById.values())}get edges(){return Array.from(this.edgesById.values())}size(){return this.nodesById.size}edgeCount(){return this.edgesById.size}successors(id){let s=this.outAdj.get(id);return s?Array.from(s):[]}predecessors(id){let s=this.inAdj.get(id);return s?Array.from(s):[]}neighbors(id){let seen=new Set(this.successors(id));for(let p of this.predecessors(id))seen.add(p);return Array.from(seen)}outDegree(id){return this.outAdj.get(id)?.size??0}inDegree(id){return this.inAdj.get(id)?.size??0}degree(id){return this.directed?this.outDegree(id)+this.inDegree(id):this.outAdj.get(id)?.size??0}hasCycle(){return this.directed?this.hasCycleDirected():this.hasCycleUndirected()}hasCycleDirected(){let color=new Map;for(let id of this.nodesById.keys())color.set(id,0);let stack=[];for(let start of this.nodesById.keys())if(color.get(start)===0)for(color.set(start,1),stack.push([start,this.successors(start)[Symbol.iterator]()]);stack.length>0;){let top=stack[stack.length-1],next=top[1].next();if(next.done){color.set(top[0],2),stack.pop();continue}let w=next.value,cw=color.get(w);if(cw===1)return!0;cw===0&&(color.set(w,1),stack.push([w,this.successors(w)[Symbol.iterator]()]))}return!1}hasCycleUndirected(){let parent=new Map,find=x=>{let root=x;for(;parent.get(root)!==root;)root=parent.get(root);let cur=x;for(;parent.get(cur)!==root;){let next=parent.get(cur);parent.set(cur,root),cur=next}return root};for(let id of this.nodesById.keys())parent.set(id,id);for(let e of this.edgesById.values()){let ra=find(e.source),rb=find(e.target);if(ra===rb)return!0;parent.set(ra,rb)}return!1}topologicalSort(){if(!this.directed)throw new GraphError("topologicalSort requires a directed graph");if(this.hasCycle())throw new GraphError("Cannot topologically sort a graph with cycles");let inDeg=new Map;for(let id of this.nodesById.keys())inDeg.set(id,this.inDegree(id));let queue=[];for(let[id,d]of inDeg)d===0&&queue.push(id);queue.sort();let result=[];for(;queue.length>0;){let n=queue.shift();result.push(n);let succs=this.successors(n).sort();for(let s of succs){let d=(inDeg.get(s)??0)-1;if(inDeg.set(s,d),d===0){let lo=0,hi=queue.length;for(;lo<hi;){let mid=lo+hi>>1;queue[mid]<s?lo=mid+1:hi=mid}queue.splice(lo,0,s)}}}return result}findConnectedComponents(){let visited=new Set,components=[];for(let start of this.nodesById.keys()){if(visited.has(start))continue;let comp=[],stack=[start];for(visited.add(start);stack.length>0;){let n=stack.pop();comp.push(n);for(let nb of this.neighbors(n))visited.has(nb)||(visited.add(nb),stack.push(nb))}comp.sort(),components.push(comp)}return components.sort((a,b)=>a[0]<b[0]?-1:a[0]>b[0]?1:0),components}componentOf(id){if(!this.nodesById.has(id))return[];let visited=new Set([id]),stack=[id];for(;stack.length>0;){let n=stack.pop();for(let nb of this.neighbors(n))visited.has(nb)||(visited.add(nb),stack.push(nb))}return Array.from(visited).sort()}bfsDepths(start,maxDepth=1/0){let result=new Map;if(!this.nodesById.has(start))return result;result.set(start,0);let queue=[start];for(;queue.length>0;){let n=queue.shift(),d=result.get(n);if(!(d>=maxDepth))for(let nb of this.neighbors(n))result.has(nb)||(result.set(nb,d+1),queue.push(nb))}return result}clone(){let g=new _Graph(this.directed);return g.addNodes(this.nodes),g.addEdges(this.edges),g}};function createGraph(nodes,edges=[],directed=!1){let g=new Graph(directed);return g.addNodes(nodes),g.addEdges(edges),g}function mulberry32(seed){let a=seed>>>0;return function(){a|=0,a=a+1831565813|0;let t=Math.imul(a^a>>>15,1|a);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function assertNonEmpty(graph){if(graph.size()===0)throw new LayoutError("Cannot lay out an empty graph")}function initialPositions(graph,width,height,rng){let pos=new Map,ids=graph.nodes.map(n=>n.id).sort(),cols=Math.max(1,Math.ceil(Math.sqrt(ids.length))),cellW=width/(cols+1),cellH=height/(Math.ceil(ids.length/cols)+1);return ids.forEach((id,i)=>{let r=Math.floor(i/cols),c=i%cols,jx=(rng()-.5)*10,jy=(rng()-.5)*10;pos.set(id,{x:cellW*(c+1)+jx,y:cellH*(r+1)+jy})}),pos}function forceDirected(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,iterations=opts.iterations??300,seed=opts.seed??1,repulsion=opts.repulsion??1,idealLength=opts.idealLength??Math.min(width,height)/Math.max(2,Math.sqrt(graph.size())),rng=mulberry32(seed),pos=initialPositions(graph,width,height,rng),ids=graph.nodes.map(n=>n.id).sort(),edges=graph.edges,cool=width/10;for(let iter=0;iter<iterations;iter++){let disp=new Map;for(let id of ids)disp.set(id,{x:0,y:0});for(let i=0;i<ids.length;i++){let v=ids[i],pv=pos.get(v);for(let j=i+1;j<ids.length;j++){let u=ids[j],pu=pos.get(u),dx=pv.x-pu.x,dy=pv.y-pu.y,dist=Math.sqrt(dx*dx+dy*dy);dist<.01&&(dist=.01,dx=(i-j)*.01+.01,dy=(j-i)*.01+.01);let force=repulsion*idealLength*idealLength/(dist*dist),fx=dx/dist*force,fy=dy/dist*force;disp.get(v).x+=fx,disp.get(v).y+=fy,disp.get(u).x-=fx,disp.get(u).y-=fy}}for(let e of edges){let a=pos.get(e.source),b=pos.get(e.target);if(!a||!b)continue;let dx=a.x-b.x,dy=a.y-b.y,dist=Math.sqrt(dx*dx+dy*dy);dist<.01&&(dist=.01,dx=.01,dy=0);let force=dist*dist/idealLength,fx=dx/dist*force,fy=dy/dist*force;disp.has(e.source)&&(disp.get(e.source).x-=fx,disp.get(e.source).y-=fy),disp.has(e.target)&&(disp.get(e.target).x+=fx,disp.get(e.target).y+=fy)}for(let id of ids){let d=disp.get(id),dlen=Math.sqrt(d.x*d.x+d.y*d.y);if(dlen<1e-6)continue;let limited=Math.min(dlen,cool),p=pos.get(id),nx=p.x+d.x/dlen*limited,ny=p.y+d.y/dlen*limited;pos.set(id,{x:Math.max(20,Math.min(width-20,nx)),y:Math.max(20,Math.min(height-20,ny))})}cool=Math.max(cool*.95,1)}return pos}function hierarchical(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,layerGap=opts.layerGap??80,nodeGap=opts.nodeGap??80,padding=opts.padding??40,layer=new Map,ids=graph.nodes.map(n=>n.id).sort(),roots;opts.root?roots=[opts.root]:(roots=ids.filter(id=>graph.inDegree(id)===0),roots.length===0&&(roots=[ids[0]]));for(let id of ids)layer.set(id,0);for(let pass=0;pass<ids.length+1;pass++){let changed=!1;for(let e of graph.edges){let a=layer.get(e.source)??0,b=layer.get(e.target)??0;a+1>b&&(layer.set(e.target,a+1),changed=!0)}if(!changed)break}if(!graph.directed){for(let id of ids)layer.set(id,0);let queue=[...roots],visited=new Set(roots);for(;queue.length>0;){let n=queue.shift(),d=layer.get(n);for(let nb of graph.neighbors(n))visited.has(nb)||(visited.add(nb),layer.set(nb,d+1),queue.push(nb))}for(let id of ids)layer.has(id)||layer.set(id,0)}let maxLayer=Math.max(...layer.values(),0),layerNodes=Array.from({length:maxLayer+1},()=>[]);for(let id of ids)layerNodes[layer.get(id)].push(id);for(let ln of layerNodes)ln.sort();let pos=new Map;for(let l=0;l<layerNodes.length;l++){let nodes=layerNodes[l],totalW=(nodes.length-1)*nodeGap,startX=(width-totalW)/2;for(let i=0;i<nodes.length;i++)pos.set(nodes[i],{x:startX+i*nodeGap,y:padding+l*layerGap})}return pos}function radial(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,ringGap=opts.ringGap??100,padding=opts.padding??40,ids=graph.nodes.map(n=>n.id).sort(),root=opts.root??ids[0];if(!graph.hasNode(root))throw new LayoutError(`Radial root not found: ${root}`);let depth=new Map;depth.set(root,0);let queue=[root];for(;queue.length>0;){let n=queue.shift(),d=depth.get(n);for(let nb of graph.neighbors(n))depth.has(nb)||(depth.set(nb,d+1),queue.push(nb))}let maxDepth=depth.size>0?Math.max(...depth.values()):0;for(let id of ids)depth.has(id)||depth.set(id,maxDepth+1);let cx=width/2,cy=height/2,pos=new Map;pos.set(root,{x:cx,y:cy});let byDepth=new Map;for(let[id,d]of depth)id!==root&&(byDepth.has(d)||byDepth.set(d,[]),byDepth.get(d).push(id));for(let arr of byDepth.values())arr.sort();for(let[d,nodes]of byDepth){let r=d*ringGap,angleStep=2*Math.PI/nodes.length;for(let i=0;i<nodes.length;i++){let angle=i*angleStep;pos.set(nodes[i],{x:cx+r*Math.cos(angle),y:cy+r*Math.sin(angle)})}}for(let[id,p]of pos)p.x=Math.max(padding,Math.min(width-padding,p.x)),p.y=Math.max(padding,Math.min(height-padding,p.y)),pos.set(id,p);return pos}function grid(graph,opts={}){assertNonEmpty(graph);let width=opts.width??800,height=opts.height??600,cellWidth=opts.cellWidth??80,cellHeight=opts.cellHeight??80,padding=opts.padding??40,ids=graph.nodes.map(n2=>n2.id).sort(),n=ids.length,columns=opts.columns??Math.max(1,Math.ceil(Math.sqrt(n))),pos=new Map;for(let i=0;i<n;i++){let r=Math.floor(i/columns),c=i%columns;pos.set(ids[i],{x:padding+c*cellWidth,y:padding+r*cellHeight})}return pos}function subgraph(graph,keepIds){let out=new Graph(graph.directed),nodes=graph.nodes.filter(n=>keepIds.has(n.id));out.addNodes(nodes);let edges=graph.edges.filter(e=>keepIds.has(e.source)&&keepIds.has(e.target));return out.addEdges(edges),out}function filterByLabel(graph,predicate){let keep=new Set;for(let n of graph.nodes)predicate(n.label)&&keep.add(n.id);return subgraph(graph,keep)}function filterByType(graph,type){let keep=new Set;for(let n of graph.nodes)(type===void 0&&n.type===void 0||n.type===type)&&keep.add(n.id);return subgraph(graph,keep)}function filterByEdgeType(graph,type){let out=new Graph(graph.directed);out.addNodes(graph.nodes);for(let e of graph.edges)(type===void 0&&e.type===void 0||e.type===type)&&out.addEdge(e);return out}function filterByComponent(graph,nodeId){let comp=graph.componentOf(nodeId);return subgraph(graph,new Set(comp))}function filterByDepth(graph,rootId,maxDepth){if(!graph.hasNode(rootId))return new Graph(graph.directed);let depths=graph.bfsDepths(rootId,maxDepth);return subgraph(graph,new Set(depths.keys()))}function filterByProperty(graph,predicate){let keep=new Set;for(let n of graph.nodes)predicate(n.properties)&&keep.add(n.id);return subgraph(graph,keep)}function filterNodes(graph,predicate){let keep=new Set;for(let n of graph.nodes)predicate(n)&&keep.add(n.id);return subgraph(graph,keep)}function filterEdges(graph,predicate){let out=new Graph(graph.directed);out.addNodes(graph.nodes);for(let e of graph.edges)predicate(e)&&out.addEdge(e);return out}function normalize(s){return s.toLowerCase().replace(/[^a-z0-9\s]/g," ").replace(/\s+/g," ").trim()}function levenshtein(a,b){let m=a.length,n=b.length;if(m===0)return n;if(n===0)return m;let prev=new Array(n+1),curr=new Array(n+1);for(let j=0;j<=n;j++)prev[j]=j;for(let i=1;i<=m;i++){curr[0]=i;for(let j=1;j<=n;j++){let cost=a.charCodeAt(i-1)===b.charCodeAt(j-1)?0:1;curr[j]=Math.min(prev[j]+1,curr[j-1]+1,prev[j-1]+cost)}for(let j=0;j<=n;j++)prev[j]=curr[j]}return prev[n]}function similarity(a,b){return a.length===0&&b.length===0?1:1-levenshtein(a,b)/Math.max(a.length,b.length)}function fieldsOf(node){let out=[["label",node.label]];if(node.type&&out.push(["type",node.type]),node.properties)for(let[k,v]of Object.entries(node.properties))(typeof v=="string"||typeof v=="number"||typeof v=="boolean")&&out.push([k,String(v)]);return out}function search(graph,query){let q=normalize(query);if(q.length===0)return[];let results=[];for(let node of graph.nodes)for(let[field,value]of fieldsOf(node)){let nv=normalize(value);if(nv===q){results.push({nodeId:node.id,score:1,matchedField:field});break}if(nv.includes(q)){let score=q.length/nv.length;results.push({nodeId:node.id,score,matchedField:field});break}}return results.sort((a,b)=>b.score-a.score||(a.nodeId<b.nodeId?-1:1)),results}function fuzzySearch(graph,query,threshold=.3){let q=normalize(query);if(q.length===0)return[];let results=[];for(let node of graph.nodes){let bestScore=0,bestField="";for(let[field,value]of fieldsOf(node)){let nv=normalize(value);if(nv.length===0)continue;let qTokens=q.split(" ").filter(Boolean),vTokens=nv.split(" ").filter(Boolean),acc=0,count=0;for(let qt of qTokens){let best=0;for(let vt of vTokens){let s=similarity(qt,vt);s>best&&(best=s)}acc+=best,count++}let tokenScore=count>0?acc/count:0,wholeScore=similarity(q,nv),fieldScore=Math.max(tokenScore,wholeScore);fieldScore>bestScore&&(bestScore=fieldScore,bestField=field)}bestScore>=threshold&&results.push({nodeId:node.id,score:bestScore,matchedField:bestField})}return results.sort((a,b)=>b.score-a.score||(a.nodeId<b.nodeId?-1:1)),results}function bfsPath(graph,start,target){if(!graph.hasNode(start)||!graph.hasNode(target))return null;if(start===target)return[start];let prev=new Map;prev.set(start,null);let queue=[start];for(;queue.length>0;){let n=queue.shift();for(let nb of graph.neighbors(n))if(!prev.has(nb)){if(prev.set(nb,n),nb===target){let path=[],cur=nb;for(;cur!==null;)path.unshift(cur),cur=prev.get(cur)??null;return path}queue.push(nb)}}return null}function dijkstra(graph,start,target){if(!graph.hasNode(start)||!graph.hasNode(target))return{path:null,distance:1/0};if(start===target)return{path:[start],distance:0};let adj=new Map;for(let id of graph.nodes.map(n=>n.id))adj.set(id,[]);for(let e of graph.edges){let w=typeof e.weight=="number"&&e.weight>=0?e.weight:1;adj.get(e.source).push({to:e.target,w}),graph.directed||adj.get(e.target).push({to:e.source,w})}let dist=new Map,prev=new Map;for(let id of adj.keys())dist.set(id,1/0),prev.set(id,null);dist.set(start,0);let visited=new Set;for(;visited.size<dist.size;){let u=null,best=1/0;for(let[id,d]of dist)!visited.has(id)&&d<best&&(best=d,u=id);if(u===null||best===1/0||u===target)break;visited.add(u);for(let{to,w}of adj.get(u)??[]){if(visited.has(to))continue;let alt=(dist.get(u)??1/0)+w;alt<(dist.get(to)??1/0)&&(dist.set(to,alt),prev.set(to,u))}}if(!isFinite(dist.get(target)??1/0))return{path:null,distance:1/0};let path=[],cur=target;for(;cur!==null;)path.unshift(cur),cur=prev.get(cur)??null;return{path,distance:dist.get(target)}}function jsonString(s){return JSON.stringify(s)}function isBareDotId(s){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(s)}function escapeMermaid(s){return s.replace(/"/g,"#quot;")}function toJSON(graph){return JSON.stringify({directed:graph.directed,nodes:graph.nodes,edges:graph.edges},null,2)}function toDot(graph,name="G"){let lines=[];lines.push(`${graph.directed?"digraph":"graph"} ${name} {`);for(let n of graph.nodes){let attrs=[`label=${jsonString(n.label)}`];n.type&&attrs.push(`type=${jsonString(n.type)}`),lines.push(` ${isBareDotId(n.id)?n.id:jsonString(n.id)} [${attrs.join(", ")}];`)}let op=graph.directed?"->":"--";for(let e of graph.edges){let s=isBareDotId(e.source)?e.source:jsonString(e.source),t=isBareDotId(e.target)?e.target:jsonString(e.target),attrs=[];e.label&&attrs.push(`label=${jsonString(e.label)}`),e.type&&attrs.push(`type=${jsonString(e.type)}`),typeof e.weight=="number"&&attrs.push(`weight=${e.weight}`);let attrStr=attrs.length>0?` [${attrs.join(", ")}]`:"";lines.push(` ${s} ${op} ${t}${attrStr};`)}return lines.push("}"),lines.join(`
|
|
4
|
+
`)}function toMermaid(graph){let lines=[`flowchart ${graph.directed?"TD":"LR"}`],safeId=id=>id.replace(/[^A-Za-z0-9_]/g,"_"),idMap=new Map;for(let n of graph.nodes){let sid=safeId(n.id);idMap.set(n.id,sid),lines.push(` ${sid}["${escapeMermaid(n.label)}"]`)}for(let e of graph.edges){let s=idMap.get(e.source),t=idMap.get(e.target);e.label?lines.push(` ${s} -- "${escapeMermaid(e.label)}" --> ${t}`):lines.push(` ${s} --> ${t}`)}return lines.join(`
|
|
5
|
+
`)}function toSVG(graph,layout,width=800,height=600){if(!layout)throw new ExportError("toSVG requires a layout");let positions=[];for(let n of graph.nodes){let p=layout.get(n.id);if(!p)throw new ExportError(`Layout missing position for node: ${n.id}`);positions.push({id:n.id,x:p.x,y:p.y})}let minX=Math.min(0,...positions.map(p=>p.x))-30,minY=Math.min(0,...positions.map(p=>p.y))-30,maxX=Math.max(width,...positions.map(p=>p.x))+30,maxY=Math.max(height,...positions.map(p=>p.y))+30,w=maxX-minX,h=maxY-minY,lines=[];lines.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="${minX} ${minY} ${w} ${h}">`),lines.push(`<rect x="${minX}" y="${minY}" width="${w}" height="${h}" fill="white"/>`);for(let e of graph.edges){let a=layout.get(e.source),b=layout.get(e.target);!a||!b||lines.push(`<line x1="${a.x}" y1="${a.y}" x2="${b.x}" y2="${b.y}" stroke="black" stroke-width="1"/>`)}for(let p of positions){let label=graph.getNode(p.id)?.label??p.id;lines.push(`<circle cx="${p.x}" cy="${p.y}" r="15" fill="#eee" stroke="black" stroke-width="1"/>`),lines.push(`<text x="${p.x}" y="${p.y-22}" font-size="11" font-family="sans-serif" text-anchor="middle" fill="black">${escapeXml(label)}</text>`)}return lines.push("</svg>"),lines.join(`
|
|
6
|
+
`)}function escapeXml(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var DEFAULT_RENDER_CONFIG={width:800,height:600,nodeRadius:18,fontSize:12,nodeColor:"#6ba8d6",edgeColor:"#888888",backgroundColor:"#ffffff",showLabels:!0};function mergeRenderConfig(partial){return partial?{...DEFAULT_RENDER_CONFIG,...partial}:{...DEFAULT_RENDER_CONFIG}}function escapeXml2(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function renderToSVG(graph,layout,config){let cfg=mergeRenderConfig(config);if(!layout)throw new ExportError("renderToSVG requires a layout");for(let n of graph.nodes)if(!layout.has(n.id))throw new ExportError(`Layout missing position for node: ${n.id}`);let lines=[];lines.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${cfg.width}" height="${cfg.height}" viewBox="0 0 ${cfg.width} ${cfg.height}">`),lines.push(`<rect x="0" y="0" width="${cfg.width}" height="${cfg.height}" fill="${escapeXml2(cfg.backgroundColor)}"/>`),graph.directed&&(lines.push("<defs>"),lines.push(`<marker id="weave-arrow" markerWidth="10" markerHeight="10" refX="${cfg.nodeRadius+2}" refY="3" orient="auto" markerUnits="userSpaceOnUse">`),lines.push(`<path d="M0,0 L0,6 L6,3 z" fill="${escapeXml2(cfg.edgeColor)}"/>`),lines.push("</marker>"),lines.push("</defs>"));for(let e of graph.edges){let a=layout.get(e.source),b=layout.get(e.target),dx=b.x-a.x,dy=b.y-a.y,len=Math.hypot(dx,dy),x2=b.x,y2=b.y;if(len>0){let ux=dx/len,uy=dy/len;x2=b.x-ux*cfg.nodeRadius,y2=b.y-uy*cfg.nodeRadius}let markerAttr=graph.directed?' marker-end="url(#weave-arrow)"':"";if(lines.push(`<line x1="${a.x}" y1="${a.y}" x2="${x2}" y2="${y2}" stroke="${escapeXml2(cfg.edgeColor)}" stroke-width="1.5"${markerAttr}/>`),cfg.showLabels&&e.label){let mx=(a.x+b.x)/2,my=(a.y+b.y)/2-4;lines.push(`<text x="${mx}" y="${my}" font-size="${Math.max(8,cfg.fontSize-2)}" font-family="sans-serif" text-anchor="middle" fill="${escapeXml2(cfg.edgeColor)}">${escapeXml2(e.label)}</text>`)}}for(let n of graph.nodes){let p=layout.get(n.id);if(lines.push(`<circle cx="${p.x}" cy="${p.y}" r="${cfg.nodeRadius}" fill="${escapeXml2(cfg.nodeColor)}" stroke="black" stroke-width="1"/>`),cfg.showLabels){let labelY=p.y-cfg.nodeRadius-4;lines.push(`<text x="${p.x}" y="${labelY}" font-size="${cfg.fontSize}" font-family="sans-serif" text-anchor="middle" fill="black">${escapeXml2(n.label)}</text>`)}}return lines.push("</svg>"),lines.join(`
|
|
7
|
+
`)}function takeSnapshot(graph,takenAt=new Date().toISOString()){let nodes=graph.nodes.map(n=>({...n,properties:n.properties?{...n.properties}:void 0})),edges=graph.edges.map(e=>({...e,properties:e.properties?{...e.properties}:void 0}));return{takenAt,graph:createGraph(nodes,edges,graph.directed)}}function nodeIds(s){return new Set(s.graph.nodes.map(n=>n.id))}function edgeIds(s){return new Set(s.graph.edges.map(e=>e.id))}function diffSnapshots(a,b){let aNodes=nodeIds(a),bNodes=nodeIds(b),aEdges=edgeIds(a),bEdges=edgeIds(b),addedNodes=b.graph.nodes.filter(n=>!aNodes.has(n.id)),removedNodes=a.graph.nodes.map(n=>n.id).filter(id=>!bNodes.has(id)),addedEdges=b.graph.edges.filter(e=>!aEdges.has(e.id)),removedEdges=a.graph.edges.map(e=>e.id).filter(id=>!bEdges.has(id));return{addedNodes,removedNodes,addedEdges,removedEdges}}var TopologyTracker=class{maxHistory;history=[];constructor(maxHistory=10){if(maxHistory<1)throw new RangeError("maxHistory must be >= 1");this.maxHistory=maxHistory}snapshot(graph,takenAt=new Date().toISOString()){let snap=takeSnapshot(graph,takenAt);for(this.history.push(snap);this.history.length>this.maxHistory;)this.history.shift();return snap}snapshots(){return this.history.slice()}current(){return this.history.length>0?this.history[this.history.length-1]:void 0}previous(){return this.history.length>=2?this.history[this.history.length-2]:void 0}diff(){let prev=this.previous(),curr=this.current();return!prev||!curr?null:diffSnapshots(prev,curr)}diffAt(i,j){return i<0||j<0||i>=this.history.length||j>=this.history.length?null:diffSnapshots(this.history[i],this.history[j])}reset(){this.history=[]}};var DEFAULT_VIEWPORT={centerX:0,centerY:0,zoom:1},SelectionModel=class{selectedNodes=new Set;selectedEdges=new Set;selectNode(id){return this.selectedNodes.add(id),this}selectEdge(id){return this.selectedEdges.add(id),this}deselectNode(id){return this.selectedNodes.delete(id),this}deselectEdge(id){return this.selectedEdges.delete(id),this}toggleNode(id){return this.selectedNodes.has(id)?(this.selectedNodes.delete(id),!1):(this.selectedNodes.add(id),!0)}toggleEdge(id){return this.selectedEdges.has(id)?(this.selectedEdges.delete(id),!1):(this.selectedEdges.add(id),!0)}isNodeSelected(id){return this.selectedNodes.has(id)}isEdgeSelected(id){return this.selectedEdges.has(id)}selectedNodeIds(){return Array.from(this.selectedNodes).sort()}selectedEdgeIds(){return Array.from(this.selectedEdges).sort()}nodeCount(){return this.selectedNodes.size}edgeCount(){return this.selectedEdges.size}clear(){return this.selectedNodes.clear(),this.selectedEdges.clear(),this}isEmpty(){return this.selectedNodes.size===0&&this.selectedEdges.size===0}setSelection(nodes,edges=[]){this.clear();for(let n of nodes)this.selectedNodes.add(n);for(let e of edges)this.selectedEdges.add(e);return this}toJSON(){return{nodes:this.selectedNodeIds(),edges:this.selectedEdgeIds()}}},IDENTITY_VIEWPORT=DEFAULT_VIEWPORT;function validateViewport(v){if(!Number.isFinite(v.centerX)||!Number.isFinite(v.centerY))throw new RangeError("Viewport.centerX/centerY must be finite");if(!Number.isFinite(v.zoom)||v.zoom<=0)throw new RangeError("Viewport.zoom must be a positive finite number")}function applyViewport(point,viewport){return validateViewport(viewport),{x:(point.x-viewport.centerX)*viewport.zoom,y:(point.y-viewport.centerY)*viewport.zoom}}function inverseViewport(point,viewport){return validateViewport(viewport),{x:point.x/viewport.zoom+viewport.centerX,y:point.y/viewport.zoom+viewport.centerY}}function panTo(graphPoint,screenPoint,zoom){if(!Number.isFinite(zoom)||zoom<=0)throw new RangeError("zoom must be positive");return{centerX:graphPoint.x-screenPoint.x/zoom,centerY:graphPoint.y-screenPoint.y/zoom,zoom}}function zoomAt(viewport,anchor,factor){if(validateViewport(viewport),!Number.isFinite(factor)||factor<=0)throw new RangeError("factor must be positive");let newZoom=viewport.zoom*factor,graphAnchor=inverseViewport(anchor,viewport);return panTo(graphAnchor,anchor,newZoom)}export{ConsoleLogger,DEFAULT_RENDER_CONFIG,DEFAULT_VIEWPORT,ExportError,Graph,GraphError,IDENTITY_VIEWPORT,LayoutError,SCRUBBED_FIELD_NAMES,SelectionModel,SilentLogger,TopologyTracker,WeaveError,applyViewport,bfsPath,createGraph,diffSnapshots,dijkstra,filterByComponent,filterByDepth,filterByEdgeType,filterByLabel,filterByProperty,filterByType,filterEdges,filterNodes,forceDirected,fuzzySearch,grid,hierarchical,inverseViewport,levenshtein,mergeRenderConfig,mulberry32,panTo,radial,renderToSVG,scrubMetadata,search,shouldScrubField,similarity,takeSnapshot,toDot,toJSON,toMermaid,toSVG,zoomAt};
|
|
8
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/errors.ts", "../../src/logging.ts", "../../src/graph/graph.ts", "../../src/layout/layout.ts", "../../src/filter/filter.ts", "../../src/search/search.ts", "../../src/export/exporter.ts", "../../src/render/renderer.ts", "../../src/topology/topology.ts", "../../src/interactive/interactive.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["n", "escapeXml"]
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|