@manya-os/weave 1.0.0 → 1.1.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 CHANGED
@@ -1,23 +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).
1
+ # Changelog
2
+
3
+ All notable changes to `@manya-os/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 CHANGED
@@ -1,21 +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.
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 CHANGED
@@ -1,252 +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.
1
+ # @manya-os/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-os/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-os/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-os/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-os/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-os/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-os/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-os/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-os/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-os/weave';
210
+ import type { Layout, Point } from '@manya-os/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 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../src/errors.ts","../src/types.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","../src/index.ts","../src/export/index.ts","../src/filter/index.ts","../src/graph/index.ts","../src/interactive/index.ts","../src/layout/index.ts","../src/render/index.ts","../src/search/index.ts","../src/topology/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/pg-types/index.d.ts","../../../node_modules/pg-protocol/dist/messages.d.ts","../../../node_modules/pg-protocol/dist/serializer.d.ts","../../../node_modules/pg-protocol/dist/parser.d.ts","../../../node_modules/pg-protocol/dist/index.d.ts","../../../node_modules/@types/pg/lib/type-overrides.d.ts","../../../node_modules/@types/pg/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[84,96,142],[96,142],[96,142,197],[84,85,86,87,88,96,142],[84,86,96,142],[96,142,154,190],[96,142,192],[96,142,193],[96,142,199,202],[96,139,142],[96,141,142],[142],[96,142,147,175],[96,142,143,148,153,161,172,183],[96,142,143,144,153,161],[91,92,93,96,142],[96,142,145,184],[96,142,146,147,154,162],[96,142,147,172,180],[96,142,148,150,153,161],[96,141,142,149],[96,142,150,151],[96,142,152,153],[96,141,142,153],[96,142,153,154,155,172,183],[96,142,153,154,155,168,172,175],[96,142,150,153,156,161,172,183],[96,142,153,154,156,157,161,172,180,183],[96,142,156,158,172,180,183],[94,95,96,97,98,99,100,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189],[96,142,153,159],[96,142,160,183,188],[96,142,150,153,161,172],[96,142,162],[96,142,163],[96,141,142,164],[96,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189],[96,142,166],[96,142,167],[96,142,153,168,169],[96,142,168,170,184,186],[96,142,153,172,173,175],[96,142,174,175],[96,142,172,173],[96,142,175],[96,142,176],[96,139,142,172,177],[96,142,153,178,179],[96,142,178,179],[96,142,147,161,172,180],[96,142,181],[96,142,161,182],[96,142,156,167,183],[96,142,147,184],[96,142,172,185],[96,142,160,186],[96,142,187],[96,137,142],[96,137,142,153,155,164,172,175,183,186,188],[96,142,172,189],[96,142,153,172,180,190,205,206,209,210,211],[96,142,211],[96,142,214],[96,142,195,201],[96,142,199],[96,142,196,200],[96,142,206,207,208],[96,142,172,206],[96,142,198],[96,109,113,142,183],[96,109,142,172,183],[96,104,142],[96,106,109,142,180,183],[96,142,161,180],[96,142,190],[96,104,142,190],[96,106,109,142,161,183],[96,101,102,105,108,142,153,172,183],[96,109,116,142],[96,101,107,142],[96,109,130,131,142],[96,105,109,142,175,183,190],[96,130,142,190],[96,103,104,142,190],[96,109,142],[96,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,142],[96,109,124,142],[96,109,116,117,142],[96,107,109,117,118,142],[96,108,142],[96,101,104,109,142],[96,109,113,117,118,142],[96,113,142],[96,107,109,112,142,183],[96,101,106,109,116,142],[96,142,172],[96,104,109,130,142,188,190],[64,65,67,96,142],[71,96,142],[65,67,96,142],[69,96,142],[64,65,96,142],[67,96,142],[64,65,66,67,68,69,70,71,72,73,74,96,142],[74,96,142],[65,96,142],[68,96,142],[72,96,142],[70,96,142],[73,96,142]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"5d6323bde124a72be2c3233e5bc9e1f1d02b2e6b7ef8255483abbe2200860a3e","signature":"e6acaf02fcf4ccaec340bf8bde95f303a2410ebc02b0675ed9eb40df29555e3d"},{"version":"5f18dcf4aa06902f120d9f2a7ae46ff6542152d9525d629caea540936cd8cb6d","signature":"71b101a2a6d6bf2e116e0d2196653a991fdd30840461f66a90f3987e7766b9d4"},{"version":"8c0e1e317afeb70aee44ff6d0d7dd8880d8ba564c79382e5101f264209c9afae","signature":"7f2e9e686b81f16b598c2494674ee0bf000e171fde2be5ed7e37b3b80fd7bdb3"},{"version":"22f31027e1ad49271ec050b690dfe9d6d39ab1f9ab19ea887966e06836303507","signature":"a3d17ff231b8264e4c32b30fc817cd6a42b045d3f8ac2337e6555665e34d355f"},{"version":"75abc446713927dd5ee3a8fb35d80e8aa88924acbe1e8fa09f8d3c9726bfdad4","signature":"1858ebf8ce2dfce56b8b2fcffa2b9a38416830afe006e78f3905e303e201148c"},{"version":"e889d8df835becea1a2e0992d83594356146ce7ee14e18033176f6b78f4fcdad","signature":"9e881c12fada4ced78042c96384d10dea56128b10e768be1cc5e9fa6a4c789ad"},{"version":"ae016bf14f7ca5e4685fe2b2be0ea6de1150868fc1a9160fca90596ecdb3992c","signature":"26c46febb9d1daa6d274429a1a65ccc2053547e7b27388276b13e199edfc5e27"},{"version":"adae2b5c66690a4c8b271cd18117b82068ca4d61f9c68e9412c2cf6d705bb820","signature":"62aab5ab4a656d5a525e2b36aa6b7f0e46c971f140ef948202c46c7b6ad8d298"},{"version":"153ca6ef0f715c49578691272ee760f0b2a92a5ab951cd3222f7747c28cc235e","signature":"045390dbb531067d04cd6afbc3155fdd4b6da5be1d25ce1d7d3af67355e0d817"},{"version":"9f238b12aebccd25bd0aaf91e668d9e52602af6a8669988bf337625a0cb66682","signature":"3e7db50684aa8ce481533d5a0ae49dfbed29bb7f63f77371d3668b0d346aaf2e"},{"version":"9fd10283e521e321f9edd25704e61f4109fe1d954ed79f542fd2ea83f11a00be","signature":"bec42b1a9a7b50e194c74b303e5b7e0b8fa067a7897262c4538389d1d1680a64"},{"version":"bbd4854e5dad1aef6e61cc4554cb61f42052b2d84583a592570ecadc7a578b4d","signature":"6ec20ba567c0dcebf10152137a0254b936883db917d648eda0566d0cbdebc1b1"},{"version":"92a94ad0c56c9eacbbfff3c6223c1f0691ec07c56a912f1f3e485c2c8f23701f","signature":"19731a2a6182ab52b1610f91973b622b7bc837b969a3466052ec5dcf8313e352"},{"version":"5cdccf460678f2317d6a108b726d3c90a5fc4db9ae82192890c8ed5f531466e9","signature":"8a89c518a25d92247b823874474cc07cd4f68521bf347bf71c8f52b859f5db57"},{"version":"57031aac34fd2681bd0045169e473269f9250ba3b438146065f344c42666022a","signature":"adb362905ffa167f58d86431b3426cef71687f1a59b53305b3d72899e0e46c98"},{"version":"4cab871fab2ceb4c68711937b0c486a5351a449ccdb5ec867e7fa9c77d79db2d","signature":"116f840e2fcd90e21d2498c15e4a07af3aa8bdad080f6c975f7d6bc6785eeb0c"},{"version":"05304dfb03e88fc42b10d51dfcb18e12a8a3fdcf1157b6a74d0c7560fee959d2","signature":"f030ebcc6797b586411ec3ba7c7e02dfa5b3fe1b5d57c05c744cc4a7c41b5992"},{"version":"7060c0f58f3481c99da1f92408dfd3884f323072c374c07b8111dbc38a2f1da4","signature":"6c316474a6f48d235d876a20d0902f091c7158c2d8a1c84729347b06a506188a"},{"version":"9f5f57199e27d90e8f56b322f7c57262a5cf3a2a9b815d491f29d847d33620dd","signature":"522ea4c0ccf932483d4234e9ae7699ba28e4f24d9433f119ea99c0add04c739a"},{"version":"2bc086556c8f837f08e6a022a92797dddfca1e612fa2d7d87e2d28affe1efa96","signature":"f02820427a788810b15e042dff398bc861520c8483a63f1fa5b2461cf2c40c10"},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"1123a83f35cf56c97de746f0a7250012153c61a167e4a61668bf50e558162d14","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"e1028394c1cf96d5d057ecc647e31e457b919092f882ed0c7092152b077fed9d","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","impliedFormat":1},{"version":"4a20a0a39aca8738cc5088f9dea2969bf2af3ca1341c56071f513059b122d150","impliedFormat":1},{"version":"a33c98f95c099c2a9a383b156c8f2a16605843d29455a954c1431bcbbc1ce35a","impliedFormat":1},{"version":"effa1fd4980f6dff4e81ed67009b847d34449087504319f9a0dd081e8cf23a31","impliedFormat":1},{"version":"c2c9f431f788b434e6ae327844ef6712bb6a6a88ad08acf20bf6cfeb41d154ba","impliedFormat":1},{"version":"798367363a3274220cbed839b883fe2f52ba7197b25e8cb2ac59c1e1fd8af6b7","impliedFormat":1},{"version":"67f3d03f61a43f045851624e52ec438803ecf5d2247660f208bd9bcadb6ff298","impliedFormat":1},{"version":"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[[64,83]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"target":9},"referencedMap":[[86,1],[84,2],[195,2],[198,3],[197,2],[89,4],[85,1],[87,5],[88,1],[90,2],[191,6],[192,2],[193,7],[194,8],[203,9],[204,2],[139,10],[140,10],[141,11],[96,12],[142,13],[143,14],[144,15],[91,2],[94,16],[92,2],[93,2],[145,17],[146,18],[147,19],[148,20],[149,21],[150,22],[151,22],[152,23],[153,24],[154,25],[155,26],[97,2],[95,2],[156,27],[157,28],[158,29],[190,30],[159,31],[160,32],[161,33],[162,34],[163,35],[164,36],[165,37],[166,38],[167,39],[168,40],[169,40],[170,41],[171,2],[172,42],[174,43],[173,44],[175,45],[176,46],[177,47],[178,48],[179,49],[180,50],[181,51],[182,52],[183,53],[184,54],[185,55],[186,56],[187,57],[98,2],[99,2],[100,2],[138,58],[188,59],[189,60],[211,61],[210,62],[212,2],[213,2],[214,2],[215,63],[196,2],[202,64],[200,65],[201,66],[209,67],[206,2],[208,68],[207,2],[205,2],[199,69],[61,2],[62,2],[12,2],[10,2],[11,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[63,2],[57,2],[58,2],[60,2],[59,2],[1,2],[14,2],[13,2],[116,70],[126,71],[115,70],[136,72],[107,73],[106,74],[135,75],[129,76],[134,77],[109,78],[123,79],[108,80],[132,81],[104,82],[103,75],[133,83],[105,84],[110,85],[111,2],[114,85],[101,2],[137,86],[127,87],[118,88],[119,89],[121,90],[117,91],[120,92],[130,75],[112,93],[113,94],[122,95],[102,96],[125,87],[124,85],[128,2],[131,97],[64,2],[71,98],[76,99],[69,100],[77,101],[67,102],[78,103],[75,104],[79,105],[74,106],[80,107],[68,98],[66,2],[81,108],[72,98],[82,109],[70,100],[83,110],[73,100],[65,2]],"latestChangedDtsFile":"./types/topology/index.d.ts","version":"5.9.3"}
package/package.json CHANGED
@@ -1,49 +1,49 @@
1
- {
2
- "name": "@manya-os/weave",
3
- "version": "1.0.0",
4
- "description": "Interactive visualization substrate for the MANYA Intelligence OS — dependency graphs, knowledge graphs, event flows, layouts, filtering, search, export, live topology tracking, and pan/zoom exploration.",
5
- "main": "dist/cjs/index.js",
6
- "types": "dist/types/index.d.ts",
7
- "scripts": {
8
- "build": "node ../../scripts/build-package.js weave",
9
- "test": "jest",
10
- "clean": "rm -rf dist build node_modules",
11
- "build:types": "node ../../scripts/build-types.js weave",
12
- "build:bundle": "node ../../scripts/build-package.js weave --no-types && node ../../scripts/build-types.js weave"
13
- },
14
- "keywords": [
15
- "manya",
16
- "weave",
17
- "graph",
18
- "visualization",
19
- "layout",
20
- "force-directed",
21
- "topology",
22
- "dependency-graph",
23
- "knowledge-graph",
24
- "svg",
25
- "graphviz",
26
- "mermaid"
27
- ],
28
- "author": "Uviwe Menyiwe (Azura Daemon) <foundation@manyahael.org>",
29
- "license": "Apache-2.0",
30
- "dependencies": {},
31
- "devDependencies": {},
32
- "module": "dist/esm/index.mjs",
33
- "exports": {
34
- ".": {
35
- "types": "./dist/types/index.d.ts",
36
- "require": "./dist/cjs/index.js",
37
- "import": "./dist/esm/index.mjs",
38
- "default": "./dist/cjs/index.js"
39
- },
40
- "./package.json": "./package.json"
41
- },
42
- "sideEffects": false,
43
- "files": [
44
- "dist",
45
- "README.md",
46
- "CHANGELOG.md",
47
- "LICENSE"
48
- ]
49
- }
1
+ {
2
+ "name": "@manya-os/weave",
3
+ "version": "1.1.0",
4
+ "description": "Interactive visualization substrate for the MANYA Intelligence OS — dependency graphs, knowledge graphs, event flows, layouts, filtering, search, export, live topology tracking, and pan/zoom exploration.",
5
+ "main": "dist/cjs/index.js",
6
+ "types": "dist/types/index.d.ts",
7
+ "scripts": {
8
+ "build": "node ../../scripts/build-package.js weave",
9
+ "test": "jest --config ../../jest.config.js",
10
+ "clean": "rm -rf dist build node_modules",
11
+ "build:types": "node ../../scripts/build-types.js weave",
12
+ "build:bundle": "node ../../scripts/build-package.js weave --no-types && node ../../scripts/build-types.js weave"
13
+ },
14
+ "keywords": [
15
+ "manya",
16
+ "weave",
17
+ "graph",
18
+ "visualization",
19
+ "layout",
20
+ "force-directed",
21
+ "topology",
22
+ "dependency-graph",
23
+ "knowledge-graph",
24
+ "svg",
25
+ "graphviz",
26
+ "mermaid"
27
+ ],
28
+ "author": "Uviwe Menyiwe (Azura Daemon) <foundation@manyahael.org>",
29
+ "license": "Apache-2.0",
30
+ "dependencies": {},
31
+ "devDependencies": {},
32
+ "module": "dist/esm/index.mjs",
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist/types/index.d.ts",
36
+ "require": "./dist/cjs/index.js",
37
+ "import": "./dist/esm/index.mjs",
38
+ "default": "./dist/cjs/index.js"
39
+ },
40
+ "./package.json": "./package.json"
41
+ },
42
+ "sideEffects": false,
43
+ "files": [
44
+ "dist",
45
+ "README.md",
46
+ "CHANGELOG.md",
47
+ "LICENSE"
48
+ ]
49
+ }