@usefragments/core 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/LICENSE +21 -0
- package/dist/chunk-243QYRUF.js +2145 -0
- package/dist/chunk-243QYRUF.js.map +1 -0
- package/dist/chunk-3LLRNCPX.js +111 -0
- package/dist/chunk-3LLRNCPX.js.map +1 -0
- package/dist/chunk-EIYNNS77.js +48 -0
- package/dist/chunk-EIYNNS77.js.map +1 -0
- package/dist/chunk-JNBFJ34I.js +326 -0
- package/dist/chunk-JNBFJ34I.js.map +1 -0
- package/dist/chunk-R3X7UBHU.js +228 -0
- package/dist/chunk-R3X7UBHU.js.map +1 -0
- package/dist/chunk-SH4KPIYH.js +393 -0
- package/dist/chunk-SH4KPIYH.js.map +1 -0
- package/dist/chunk-V4VQB57N.js +56 -0
- package/dist/chunk-V4VQB57N.js.map +1 -0
- package/dist/chunk-X34IA4LR.js +319 -0
- package/dist/chunk-X34IA4LR.js.map +1 -0
- package/dist/chunk-YF65VYRY.js +493 -0
- package/dist/chunk-YF65VYRY.js.map +1 -0
- package/dist/codes/index.d.ts +40 -0
- package/dist/codes/index.js +23 -0
- package/dist/codes/index.js.map +1 -0
- package/dist/compiled-types/index.d.ts +5 -0
- package/dist/compiled-types/index.js +1 -0
- package/dist/compiled-types/index.js.map +1 -0
- package/dist/generate/index.d.ts +47 -0
- package/dist/generate/index.js +11 -0
- package/dist/generate/index.js.map +1 -0
- package/dist/governance-BOa3KyiJ.d.ts +3279 -0
- package/dist/graph/index.d.ts +66 -0
- package/dist/graph/index.js +17 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/index.d.ts +11388 -0
- package/dist/index.js +8711 -0
- package/dist/index.js.map +1 -0
- package/dist/package-identity.d.ts +42 -0
- package/dist/package-identity.js +23 -0
- package/dist/package-identity.js.map +1 -0
- package/dist/preview/index.d.ts +484 -0
- package/dist/preview/index.js +1129 -0
- package/dist/preview/index.js.map +1 -0
- package/dist/react-types.d.ts +22 -0
- package/dist/react-types.js +1 -0
- package/dist/react-types.js.map +1 -0
- package/dist/registry.d.ts +2367 -0
- package/dist/registry.js +62 -0
- package/dist/registry.js.map +1 -0
- package/dist/schemas/index.d.ts +2584 -0
- package/dist/schemas/index.js +55 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/severity.d.ts +18 -0
- package/dist/severity.js +27 -0
- package/dist/severity.js.map +1 -0
- package/dist/test-utils.d.ts +14 -0
- package/dist/test-utils.js +63 -0
- package/dist/test-utils.js.map +1 -0
- package/dist/topology/index.d.ts +48 -0
- package/dist/topology/index.js +7 -0
- package/dist/topology/index.js.map +1 -0
- package/dist/types-xJ2xyp_G.d.ts +119 -0
- package/package.json +120 -0
- package/src/__tests__/contract-parser.test.ts +614 -0
- package/src/__tests__/dtcg-generators.test.ts +439 -0
- package/src/__tests__/dtcg-parser.test.ts +884 -0
- package/src/__tests__/preview-runtime.test.tsx +111 -0
- package/src/__tests__/schema.test.ts +31 -0
- package/src/__tests__/severity.test.ts +34 -0
- package/src/__tests__/style-comparison.test.ts +662 -0
- package/src/__tests__/tokens-compat.test.ts +51 -0
- package/src/agent-format.test.ts +105 -0
- package/src/agent-format.ts +141 -0
- package/src/bundle.ts +149 -0
- package/src/codes/__tests__/codes.test.ts +73 -0
- package/src/codes/codes.ts +463 -0
- package/src/codes/index.ts +7 -0
- package/src/codes/source-finding-bridge.ts +113 -0
- package/src/compiled-types/index.ts +293 -0
- package/src/component-contract.ts +231 -0
- package/src/component-discovery.ts +80 -0
- package/src/composition.test.ts +262 -0
- package/src/composition.ts +318 -0
- package/src/config-paths.test.ts +78 -0
- package/src/config-paths.ts +47 -0
- package/src/config.ts +18 -0
- package/src/conform-prove.test.ts +274 -0
- package/src/conform-prove.ts +326 -0
- package/src/conform.ts +160 -0
- package/src/constants.ts +114 -0
- package/src/context.ts +2 -0
- package/src/contract/fixture.ts +110 -0
- package/src/contract/hash.test.ts +86 -0
- package/src/contract/hash.ts +195 -0
- package/src/contract/index.ts +43 -0
- package/src/contract/preimage.test.ts +254 -0
- package/src/contract/preimage.ts +365 -0
- package/src/contract/stamp.test.ts +100 -0
- package/src/contract/stamp.ts +105 -0
- package/src/contract-parser.ts +141 -0
- package/src/defineFragment.test.ts +257 -0
- package/src/defineFragment.ts +293 -0
- package/src/dtcg-generators.ts +324 -0
- package/src/dtcg-parser.ts +1 -0
- package/src/dtcg.ts +237 -0
- package/src/facts/__snapshots__/facts.test.ts.snap +124 -0
- package/src/facts/builders.ts +835 -0
- package/src/facts/compile.ts +422 -0
- package/src/facts/fact-index.ts +394 -0
- package/src/facts/facts.test.ts +494 -0
- package/src/facts/ids.ts +125 -0
- package/src/facts/index.ts +119 -0
- package/src/facts/types.ts +614 -0
- package/src/figma.ts +263 -0
- package/src/fragment-types.ts +214 -0
- package/src/generate/generate.test.ts +594 -0
- package/src/generate/index.ts +438 -0
- package/src/governance-integrity.test.ts +186 -0
- package/src/governance-integrity.ts +282 -0
- package/src/governance.test.ts +300 -0
- package/src/governance.ts +605 -0
- package/src/governance.type-test.ts +75 -0
- package/src/graph/engine.ts +446 -0
- package/src/graph/graph.test.ts +746 -0
- package/src/graph/index.ts +32 -0
- package/src/graph/serialization.ts +55 -0
- package/src/graph/types.ts +178 -0
- package/src/index.ts +891 -0
- package/src/local-canonical.ts +102 -0
- package/src/mcp-snapshot.ts +222 -0
- package/src/package-identity-match.ts +33 -0
- package/src/package-identity.generated.ts +233 -0
- package/src/package-identity.test.ts +99 -0
- package/src/package-identity.ts +157 -0
- package/src/performance-presets.ts +142 -0
- package/src/preview/comparison-artifact.test.ts +228 -0
- package/src/preview/comparison-artifact.ts +181 -0
- package/src/preview/comparison-context.ts +93 -0
- package/src/preview/comparison-evidence.ts +112 -0
- package/src/preview/comparison-format.ts +21 -0
- package/src/preview/comparison-presentation.ts +187 -0
- package/src/preview/comparison-references.test.ts +430 -0
- package/src/preview/comparison-references.ts +72 -0
- package/src/preview/comparison-score.ts +59 -0
- package/src/preview/comparison-styles.ts +197 -0
- package/src/preview/comparison.test.ts +559 -0
- package/src/preview/comparison.ts +488 -0
- package/src/preview/index.ts +10 -0
- package/src/preview/types.ts +309 -0
- package/src/preview/validation.test.ts +290 -0
- package/src/preview/validation.ts +356 -0
- package/src/preview-runtime.tsx +144 -0
- package/src/raw-html-canonical.test.ts +41 -0
- package/src/raw-html-canonical.ts +179 -0
- package/src/react-types.ts +21 -0
- package/src/registry-install-plan.ts +344 -0
- package/src/registry.test.ts +245 -0
- package/src/registry.ts +369 -0
- package/src/rules/a11y-required-accessible-name.ts +93 -0
- package/src/rules/color-math.test.ts +72 -0
- package/src/rules/color-math.ts +192 -0
- package/src/rules/components-forbidden-prop-value.ts +108 -0
- package/src/rules/components-prefer-library.ts +943 -0
- package/src/rules/components-unknown-prop.ts +94 -0
- package/src/rules/composition-pattern-schema.ts +125 -0
- package/src/rules/composition-pattern.test.ts +320 -0
- package/src/rules/composition-pattern.ts +271 -0
- package/src/rules/emit-gate.test.ts +42 -0
- package/src/rules/emit-gate.ts +60 -0
- package/src/rules/finding.ts +54 -0
- package/src/rules/index.ts +235 -0
- package/src/rules/jsx-preferred-component.ts +68 -0
- package/src/rules/jsx-preferred-import-path.ts +67 -0
- package/src/rules/presets.ts +57 -0
- package/src/rules/props-invalid-value.ts +115 -0
- package/src/rules/rules.test.ts +3636 -0
- package/src/rules/spacing-resolution.ts +184 -0
- package/src/rules/styles-no-raw-color.ts +329 -0
- package/src/rules/styles-no-raw-dimensions.ts +357 -0
- package/src/rules/styles-no-raw-spacing.ts +236 -0
- package/src/rules/styles-no-raw-typography.ts +237 -0
- package/src/rules/tailwind-arbitrary-color.test.ts +128 -0
- package/src/rules/tailwind-arbitrary-color.ts +93 -0
- package/src/rules/tailwind-arbitrary-spacing.test.ts +157 -0
- package/src/rules/tailwind-arbitrary-spacing.ts +120 -0
- package/src/rules/tailwind-forbidden-palette.test.ts +116 -0
- package/src/rules/tailwind-forbidden-palette.ts +107 -0
- package/src/rules/tailwind-off-scale-spacing-token.test.ts +100 -0
- package/src/rules/tailwind-off-scale-spacing-token.ts +108 -0
- package/src/rules/tailwind-raw-color-via-token.test.ts +108 -0
- package/src/rules/tailwind-raw-color-via-token.ts +82 -0
- package/src/rules/tailwind-rule-utils.ts +106 -0
- package/src/rules/tailwind-unknown-class.test.ts +157 -0
- package/src/rules/tailwind-unknown-class.ts +121 -0
- package/src/rules/taxonomy.test.ts +238 -0
- package/src/rules/theme-no-theme-coupled-literal.ts +132 -0
- package/src/rules/tiers.ts +111 -0
- package/src/rules/tokens-css-vars-must-be-defined.test.ts +244 -0
- package/src/rules/tokens-css-vars-must-be-defined.ts +156 -0
- package/src/rules/tokens-require-dual-fallback.ts +78 -0
- package/src/rules/types.ts +27 -0
- package/src/rules/utils.test.ts +110 -0
- package/src/rules/utils.ts +599 -0
- package/src/schema.ts +427 -0
- package/src/schemas/index.ts +275 -0
- package/src/schemas/schemas.test.ts +124 -0
- package/src/severity.ts +54 -0
- package/src/storyAdapter.test.ts +571 -0
- package/src/storyAdapter.ts +761 -0
- package/src/storyFilters.test.ts +350 -0
- package/src/storyFilters.ts +253 -0
- package/src/storybook-csf.ts +11 -0
- package/src/style-comparison.ts +423 -0
- package/src/test-utils.ts +68 -0
- package/src/token-parser.ts +2 -0
- package/src/token-types.ts +287 -0
- package/src/tokens/categories.ts +131 -0
- package/src/tokens/color.ts +193 -0
- package/src/tokens/design-token-parser.test.ts +159 -0
- package/src/tokens/design-token-parser.ts +402 -0
- package/src/tokens/dtcg.ts +428 -0
- package/src/tokens/index.ts +130 -0
- package/src/tokens/lookup.ts +19 -0
- package/src/tokens/scss.ts +171 -0
- package/src/tokens/tailwind-v4.ts +187 -0
- package/src/tokens/types.ts +43 -0
- package/src/topology/index.ts +9 -0
- package/src/topology/resolve-area.test.ts +174 -0
- package/src/topology/resolve-area.ts +215 -0
- package/src/types.ts +1057 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component Graph Intelligence Layer — barrel exports.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export type {
|
|
6
|
+
GraphEdgeType,
|
|
7
|
+
ComponentNode,
|
|
8
|
+
GraphEdge,
|
|
9
|
+
GraphHealth,
|
|
10
|
+
ComponentGraph,
|
|
11
|
+
ImpactResult,
|
|
12
|
+
PathResult,
|
|
13
|
+
NeighborResult,
|
|
14
|
+
CompositionTree,
|
|
15
|
+
SerializedEdge,
|
|
16
|
+
SerializedComponentGraph,
|
|
17
|
+
} from './types.js';
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
GRAPH_EDGE_TYPES,
|
|
21
|
+
EDGE_TYPE_WEIGHTS,
|
|
22
|
+
} from './types.js';
|
|
23
|
+
|
|
24
|
+
export {
|
|
25
|
+
ComponentGraphEngine,
|
|
26
|
+
computeHealthFromData,
|
|
27
|
+
} from './engine.js';
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
serializeGraph,
|
|
31
|
+
deserializeGraph,
|
|
32
|
+
} from './serialization.js';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph serialization — compact JSON format for fragments.json embedding.
|
|
3
|
+
*
|
|
4
|
+
* Edges use short keys (s, t, ty, w, no, p) to reduce JSON size.
|
|
5
|
+
* Round-trips through serialize → deserialize preserve all data.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type {
|
|
9
|
+
ComponentGraph,
|
|
10
|
+
GraphEdge,
|
|
11
|
+
SerializedComponentGraph,
|
|
12
|
+
SerializedEdge,
|
|
13
|
+
} from './types.js';
|
|
14
|
+
|
|
15
|
+
/** Serialize a ComponentGraph to compact JSON format */
|
|
16
|
+
export function serializeGraph(graph: ComponentGraph): SerializedComponentGraph {
|
|
17
|
+
return {
|
|
18
|
+
nodes: graph.nodes,
|
|
19
|
+
edges: graph.edges.map(serializeEdge),
|
|
20
|
+
health: graph.health,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Deserialize a compact JSON graph back to full ComponentGraph */
|
|
25
|
+
export function deserializeGraph(serialized: SerializedComponentGraph): ComponentGraph {
|
|
26
|
+
return {
|
|
27
|
+
nodes: serialized.nodes,
|
|
28
|
+
edges: serialized.edges.map(deserializeEdge),
|
|
29
|
+
health: serialized.health,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function serializeEdge(edge: GraphEdge): SerializedEdge {
|
|
34
|
+
const result: SerializedEdge = {
|
|
35
|
+
s: edge.source,
|
|
36
|
+
t: edge.target,
|
|
37
|
+
ty: edge.type,
|
|
38
|
+
w: edge.weight,
|
|
39
|
+
p: edge.provenance,
|
|
40
|
+
};
|
|
41
|
+
if (edge.note) result.no = edge.note;
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function deserializeEdge(edge: SerializedEdge): GraphEdge {
|
|
46
|
+
const result: GraphEdge = {
|
|
47
|
+
source: edge.s,
|
|
48
|
+
target: edge.t,
|
|
49
|
+
type: edge.ty,
|
|
50
|
+
weight: edge.w,
|
|
51
|
+
provenance: edge.p,
|
|
52
|
+
};
|
|
53
|
+
if (edge.no) result.note = edge.no;
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component Graph data model — types for the design-system-semantic relationship graph.
|
|
3
|
+
*
|
|
4
|
+
* These types describe nodes (components), edges (relationships), and health
|
|
5
|
+
* metrics that together give AI agents structural understanding of a design system.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Edge types — design-system-semantic
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
export type GraphEdgeType =
|
|
13
|
+
| 'imports' // A imports B in source code
|
|
14
|
+
| 'hook-depends' // A calls useB() from B
|
|
15
|
+
| 'renders' // A renders <B> in examples
|
|
16
|
+
| 'composes' // A and B co-occur in a block
|
|
17
|
+
| 'parent-of' // A should wrap B
|
|
18
|
+
| 'alternative-to' // A can replace B
|
|
19
|
+
| 'sibling-of'; // A and B at same level
|
|
20
|
+
|
|
21
|
+
export const GRAPH_EDGE_TYPES: readonly GraphEdgeType[] = [
|
|
22
|
+
'imports',
|
|
23
|
+
'hook-depends',
|
|
24
|
+
'renders',
|
|
25
|
+
'composes',
|
|
26
|
+
'parent-of',
|
|
27
|
+
'alternative-to',
|
|
28
|
+
'sibling-of',
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
/** Default weight for each edge type */
|
|
32
|
+
export const EDGE_TYPE_WEIGHTS: Record<GraphEdgeType, number> = {
|
|
33
|
+
'imports': 1.0,
|
|
34
|
+
'hook-depends': 0.75,
|
|
35
|
+
'renders': 0.5,
|
|
36
|
+
'composes': 0.5,
|
|
37
|
+
'parent-of': 1.0,
|
|
38
|
+
'alternative-to': 1.0,
|
|
39
|
+
'sibling-of': 0.75,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Nodes
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
|
|
46
|
+
export interface ComponentNode {
|
|
47
|
+
name: string;
|
|
48
|
+
category: string;
|
|
49
|
+
status: string;
|
|
50
|
+
compositionPattern?: 'compound' | 'simple' | 'controlled' | 'wrapper';
|
|
51
|
+
subComponents?: string[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// Edges
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
|
|
58
|
+
export interface GraphEdge {
|
|
59
|
+
source: string;
|
|
60
|
+
target: string;
|
|
61
|
+
type: GraphEdgeType;
|
|
62
|
+
weight: number;
|
|
63
|
+
note?: string;
|
|
64
|
+
/** Where this edge was detected from */
|
|
65
|
+
provenance: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Health metrics
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
|
|
72
|
+
export interface GraphHealth {
|
|
73
|
+
/** Components with zero edges */
|
|
74
|
+
orphans: string[];
|
|
75
|
+
/** Top components by total degree (in + out) */
|
|
76
|
+
hubs: Array<{ name: string; degree: number }>;
|
|
77
|
+
/** Percentage of components appearing in at least one block */
|
|
78
|
+
compositionCoverage: number;
|
|
79
|
+
/** Disconnected groups (BFS on undirected projection) */
|
|
80
|
+
connectedComponents: string[][];
|
|
81
|
+
/** Average degree across all nodes */
|
|
82
|
+
averageDegree: number;
|
|
83
|
+
/** Total node and edge counts */
|
|
84
|
+
nodeCount: number;
|
|
85
|
+
edgeCount: number;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Full graph
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
export interface ComponentGraph {
|
|
93
|
+
nodes: ComponentNode[];
|
|
94
|
+
edges: GraphEdge[];
|
|
95
|
+
health: GraphHealth;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Query results
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
|
|
102
|
+
export interface ImpactResult {
|
|
103
|
+
/** The component that was changed */
|
|
104
|
+
component: string;
|
|
105
|
+
/** Components affected at each depth level */
|
|
106
|
+
affected: Array<{
|
|
107
|
+
component: string;
|
|
108
|
+
depth: number;
|
|
109
|
+
path: string[];
|
|
110
|
+
edgeType: GraphEdgeType;
|
|
111
|
+
}>;
|
|
112
|
+
/** Blocks that use the changed component or any affected component */
|
|
113
|
+
affectedBlocks: string[];
|
|
114
|
+
/** Total count of affected components */
|
|
115
|
+
totalAffected: number;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface PathResult {
|
|
119
|
+
/** Whether a path exists */
|
|
120
|
+
found: boolean;
|
|
121
|
+
/** Nodes along the shortest path (including source and target) */
|
|
122
|
+
path: string[];
|
|
123
|
+
/** Edges along the shortest path */
|
|
124
|
+
edges: GraphEdge[];
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface NeighborResult {
|
|
128
|
+
/** The center component */
|
|
129
|
+
component: string;
|
|
130
|
+
/** All components reachable within maxHops */
|
|
131
|
+
neighbors: Array<{
|
|
132
|
+
component: string;
|
|
133
|
+
hops: number;
|
|
134
|
+
edgeType: GraphEdgeType;
|
|
135
|
+
}>;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface CompositionTree {
|
|
139
|
+
/** The root component */
|
|
140
|
+
component: string;
|
|
141
|
+
/** Composition pattern */
|
|
142
|
+
compositionPattern?: 'compound' | 'simple' | 'controlled' | 'wrapper';
|
|
143
|
+
/** Direct sub-components */
|
|
144
|
+
subComponents: string[];
|
|
145
|
+
/** Components that declare this component as their parent */
|
|
146
|
+
children: string[];
|
|
147
|
+
/** Parent component (if this is a sub-component) */
|
|
148
|
+
parent?: string;
|
|
149
|
+
/** Sibling components at the same level */
|
|
150
|
+
siblings: string[];
|
|
151
|
+
/** Blocks that use this component */
|
|
152
|
+
blocks: string[];
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// Serialization (compact keys for JSON size)
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
|
|
159
|
+
export interface SerializedEdge {
|
|
160
|
+
/** source */
|
|
161
|
+
s: string;
|
|
162
|
+
/** target */
|
|
163
|
+
t: string;
|
|
164
|
+
/** type */
|
|
165
|
+
ty: GraphEdgeType;
|
|
166
|
+
/** weight */
|
|
167
|
+
w: number;
|
|
168
|
+
/** note (optional) */
|
|
169
|
+
no?: string;
|
|
170
|
+
/** provenance */
|
|
171
|
+
p: string;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export interface SerializedComponentGraph {
|
|
175
|
+
nodes: ComponentNode[];
|
|
176
|
+
edges: SerializedEdge[];
|
|
177
|
+
health: GraphHealth;
|
|
178
|
+
}
|