@graph-ir/core 0.2.0 → 0.2.2
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/README.md +14 -2
- package/dist/canonical-types-2.d.ts +207 -0
- package/dist/canonical-types-2.d.ts.map +1 -0
- package/dist/canonical-types-2.js +3 -0
- package/dist/canonical-types-2.js.map +1 -0
- package/dist/canonical-types.d.ts +332 -0
- package/dist/canonical-types.d.ts.map +1 -0
- package/dist/canonical-types.js +3 -0
- package/dist/canonical-types.js.map +1 -0
- package/dist/generation/id-generator.d.ts.map +1 -1
- package/dist/generation/id-generator.js +16 -10
- package/dist/generation/id-generator.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/output/types.d.ts.map +1 -1
- package/dist/schemas/graph-ir-2.0.schema.json +416 -0
- package/dist/schemas/graph-ir.schema.json +1684 -228
- package/dist/skills/diff.d.ts +4 -0
- package/dist/skills/diff.d.ts.map +1 -1
- package/dist/skills/diff.js +93 -11
- package/dist/skills/diff.js.map +1 -1
- package/dist/skills/migrate.d.ts +48 -19
- package/dist/skills/migrate.d.ts.map +1 -1
- package/dist/skills/migrate.js +482 -239
- package/dist/skills/migrate.js.map +1 -1
- package/dist/skills/visualize.d.ts.map +1 -1
- package/dist/skills/visualize.js +33 -5
- package/dist/skills/visualize.js.map +1 -1
- package/dist/testing/diff.d.ts +1 -1
- package/dist/testing/diff.d.ts.map +1 -1
- package/dist/testing/diff.js +52 -19
- package/dist/testing/diff.js.map +1 -1
- package/dist/types.d.ts +13 -214
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -2
- package/dist/types.js.map +1 -1
- package/dist/validation/ir-validator.d.ts +35 -44
- package/dist/validation/ir-validator.d.ts.map +1 -1
- package/dist/validation/ir-validator.js +735 -288
- package/dist/validation/ir-validator.js.map +1 -1
- package/dist/validation/validator.d.ts.map +1 -1
- package/package.json +9 -4
- package/specification.json +13 -0
package/README.md
CHANGED
|
@@ -18,8 +18,20 @@ const result = validateIR(graphIR, { strict: true });
|
|
|
18
18
|
console.log(new PrettyFormatter().format(result));
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
The
|
|
22
|
-
|
|
21
|
+
The GraphIR document schema and npm package have independent versions. This
|
|
22
|
+
package release is `0.2.2`; its authored schema is `3.0.0`.
|
|
23
|
+
|
|
24
|
+
Schema 3.0 adds portable notation profiles, structured classifier and
|
|
25
|
+
relationship-end semantics, and explicit interaction identities and order.
|
|
26
|
+
Positions and dimensions remain authored exact geometry; generated routes and
|
|
27
|
+
measured/computed geometry belong in a separate layout result.
|
|
28
|
+
|
|
29
|
+
This is a coordinated pre-1.0 breaking release. Use `migrateGraphIR2To3` for
|
|
30
|
+
the named, validated schema-2-to-3 transition. The existing `migrateIR` API
|
|
31
|
+
remains the conservative 1.x-to-2 boundary, where ambiguous geometry requires
|
|
32
|
+
an explicit loss policy.
|
|
33
|
+
|
|
34
|
+
The schema is available through the `@graph-ir/core/schema` export.
|
|
23
35
|
|
|
24
36
|
## License
|
|
25
37
|
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/** Canonical authored GraphIR schema 2.0.0 declarations. */
|
|
2
|
+
export interface GraphIR {
|
|
3
|
+
version: '2.0.0';
|
|
4
|
+
id: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
nodes: GraphNode[];
|
|
7
|
+
edges: GraphEdge[];
|
|
8
|
+
constraints?: SpatialConstraint[];
|
|
9
|
+
metadata?: GraphMetadata;
|
|
10
|
+
layoutOptions?: LayoutOptions;
|
|
11
|
+
}
|
|
12
|
+
export interface GraphNode {
|
|
13
|
+
id: string;
|
|
14
|
+
type: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
symbol?: string;
|
|
18
|
+
variant?: string;
|
|
19
|
+
properties?: Record<string, unknown>;
|
|
20
|
+
children?: GraphNode[];
|
|
21
|
+
/** Must match the immediate enclosing node. Root nodes omit this field. */
|
|
22
|
+
parent?: string;
|
|
23
|
+
ports?: Port[];
|
|
24
|
+
/** Authored fixed outer size, never a measured layout result. */
|
|
25
|
+
dimensions?: Dimensions;
|
|
26
|
+
/** Authored exact position; nested values are parent-content-box-local. */
|
|
27
|
+
position?: Position;
|
|
28
|
+
/** A pin fixes the authored position in its declared coordinate frame. */
|
|
29
|
+
pinned?: boolean;
|
|
30
|
+
labelPlacement?: NodeLabelPlacement;
|
|
31
|
+
layoutOptions?: NodeLayoutOptions;
|
|
32
|
+
sourceInfo?: SourceInfo;
|
|
33
|
+
}
|
|
34
|
+
export interface GraphEdge {
|
|
35
|
+
id: string;
|
|
36
|
+
source: string;
|
|
37
|
+
target: string;
|
|
38
|
+
sourcePort?: string;
|
|
39
|
+
targetPort?: string;
|
|
40
|
+
type?: string;
|
|
41
|
+
label?: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
labelPlacement?: EdgeLabelPlacement;
|
|
44
|
+
routeIntent?: RouteIntent;
|
|
45
|
+
properties?: Record<string, unknown>;
|
|
46
|
+
style?: EdgeStyle;
|
|
47
|
+
sourceInfo?: SourceInfo;
|
|
48
|
+
}
|
|
49
|
+
export type PlacementSide = 'above' | 'below' | 'left' | 'right' | 'center';
|
|
50
|
+
export interface NodeLabelPlacement {
|
|
51
|
+
side: PlacementSide;
|
|
52
|
+
offset?: number;
|
|
53
|
+
}
|
|
54
|
+
export interface EdgeLabelPlacement {
|
|
55
|
+
side: PlacementSide;
|
|
56
|
+
at?: number;
|
|
57
|
+
offset?: number;
|
|
58
|
+
}
|
|
59
|
+
export type ConstraintStrength = 'required' | 'preferred';
|
|
60
|
+
export type ConstraintAlignment = 'start' | 'center' | 'end';
|
|
61
|
+
export type ConstraintNodeReference = {
|
|
62
|
+
kind: 'node';
|
|
63
|
+
nodeId: string;
|
|
64
|
+
};
|
|
65
|
+
export type BoundaryScope = {
|
|
66
|
+
kind: 'graph';
|
|
67
|
+
} | {
|
|
68
|
+
kind: 'node';
|
|
69
|
+
nodeId: string;
|
|
70
|
+
};
|
|
71
|
+
export interface ConstraintBase {
|
|
72
|
+
id: string;
|
|
73
|
+
strength?: ConstraintStrength;
|
|
74
|
+
sourceInfo?: SourceInfo;
|
|
75
|
+
}
|
|
76
|
+
export interface RelativeConstraint extends ConstraintBase {
|
|
77
|
+
kind: 'relative';
|
|
78
|
+
subject: ConstraintNodeReference;
|
|
79
|
+
relation: 'above' | 'below' | 'left-of' | 'right-of';
|
|
80
|
+
target: ConstraintNodeReference;
|
|
81
|
+
gap?: number;
|
|
82
|
+
alignment?: ConstraintAlignment;
|
|
83
|
+
}
|
|
84
|
+
export interface BoundaryConstraint extends ConstraintBase {
|
|
85
|
+
kind: 'boundary';
|
|
86
|
+
subject: ConstraintNodeReference;
|
|
87
|
+
side: 'top' | 'bottom' | 'left' | 'right';
|
|
88
|
+
scope: BoundaryScope;
|
|
89
|
+
inset?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface ArrangementConstraint extends ConstraintBase {
|
|
92
|
+
kind: 'arrangement';
|
|
93
|
+
subjects: ConstraintNodeReference[];
|
|
94
|
+
axis: 'row' | 'column';
|
|
95
|
+
direction?: 'forward' | 'reverse';
|
|
96
|
+
gap?: number;
|
|
97
|
+
alignment?: ConstraintAlignment;
|
|
98
|
+
}
|
|
99
|
+
export type SpatialConstraint = RelativeConstraint | BoundaryConstraint | ArrangementConstraint;
|
|
100
|
+
export type RouteAnchor = {
|
|
101
|
+
kind: 'source';
|
|
102
|
+
} | {
|
|
103
|
+
kind: 'target';
|
|
104
|
+
} | {
|
|
105
|
+
kind: 'node';
|
|
106
|
+
nodeId: string;
|
|
107
|
+
} | {
|
|
108
|
+
kind: 'port';
|
|
109
|
+
nodeId: string;
|
|
110
|
+
portId: string;
|
|
111
|
+
};
|
|
112
|
+
export type WaypointPlacement = {
|
|
113
|
+
kind: 'absolute';
|
|
114
|
+
position: Position;
|
|
115
|
+
} | {
|
|
116
|
+
kind: 'relative';
|
|
117
|
+
anchor: RouteAnchor;
|
|
118
|
+
offset: Position;
|
|
119
|
+
};
|
|
120
|
+
export interface RouteWaypoint {
|
|
121
|
+
id: string;
|
|
122
|
+
placement: WaypointPlacement;
|
|
123
|
+
}
|
|
124
|
+
export interface RouteIntent {
|
|
125
|
+
waypoints: RouteWaypoint[];
|
|
126
|
+
}
|
|
127
|
+
export interface Port {
|
|
128
|
+
id: string;
|
|
129
|
+
side: PortSide;
|
|
130
|
+
label?: string;
|
|
131
|
+
position?: number;
|
|
132
|
+
properties?: Record<string, unknown>;
|
|
133
|
+
}
|
|
134
|
+
export type PortSide = 'NORTH' | 'SOUTH' | 'EAST' | 'WEST';
|
|
135
|
+
export interface Dimensions {
|
|
136
|
+
width: number;
|
|
137
|
+
height: number;
|
|
138
|
+
}
|
|
139
|
+
export interface Position {
|
|
140
|
+
x: number;
|
|
141
|
+
y: number;
|
|
142
|
+
}
|
|
143
|
+
export interface EdgeStyle {
|
|
144
|
+
lineStyle?: 'solid' | 'dashed' | 'dotted';
|
|
145
|
+
targetArrow?: 'arrow' | 'diamond' | 'circle' | 'none';
|
|
146
|
+
sourceArrow?: 'arrow' | 'diamond' | 'circle' | 'none';
|
|
147
|
+
routing?: 'orthogonal' | 'polyline' | 'spline';
|
|
148
|
+
}
|
|
149
|
+
export interface LayoutOptions {
|
|
150
|
+
algorithm?: 'layered' | 'force' | 'radial' | 'tree' | 'fixed';
|
|
151
|
+
direction?: 'DOWN' | 'UP' | 'LEFT' | 'RIGHT';
|
|
152
|
+
spacing?: SpacingOptions;
|
|
153
|
+
edgeRouting?: 'orthogonal' | 'polyline' | 'spline';
|
|
154
|
+
hierarchyHandling?: 'INCLUDE_CHILDREN' | 'SEPARATE_CHILDREN';
|
|
155
|
+
}
|
|
156
|
+
export interface SpacingOptions {
|
|
157
|
+
nodeNode?: number;
|
|
158
|
+
nodeEdge?: number;
|
|
159
|
+
edgeEdge?: number;
|
|
160
|
+
layerSpacing?: number;
|
|
161
|
+
}
|
|
162
|
+
export interface NodeLayoutOptions {
|
|
163
|
+
portConstraints?: 'FREE' | 'FIXED_SIDE' | 'FIXED_ORDER' | 'FIXED_POS';
|
|
164
|
+
portAlignment?: 'BEGIN' | 'CENTER' | 'END' | 'JUSTIFIED';
|
|
165
|
+
sizeConstraints?: ('MINIMUM_SIZE' | 'NODE_LABELS' | 'PORTS')[];
|
|
166
|
+
minimumSize?: Dimensions;
|
|
167
|
+
padding?: Padding;
|
|
168
|
+
}
|
|
169
|
+
export interface Padding {
|
|
170
|
+
top?: number;
|
|
171
|
+
right?: number;
|
|
172
|
+
bottom?: number;
|
|
173
|
+
left?: number;
|
|
174
|
+
}
|
|
175
|
+
export interface SourceInfo {
|
|
176
|
+
range: SourceRange;
|
|
177
|
+
leadingComments?: Comment[];
|
|
178
|
+
trailingComment?: Comment;
|
|
179
|
+
leadingWhitespace?: string;
|
|
180
|
+
modified?: boolean;
|
|
181
|
+
originalText?: string;
|
|
182
|
+
}
|
|
183
|
+
export interface SourceRange {
|
|
184
|
+
start: number;
|
|
185
|
+
end: number;
|
|
186
|
+
startPosition?: SourcePosition;
|
|
187
|
+
endPosition?: SourcePosition;
|
|
188
|
+
}
|
|
189
|
+
export interface SourcePosition {
|
|
190
|
+
line: number;
|
|
191
|
+
column: number;
|
|
192
|
+
}
|
|
193
|
+
export interface Comment {
|
|
194
|
+
text: string;
|
|
195
|
+
style: 'line' | 'block';
|
|
196
|
+
range?: SourceRange;
|
|
197
|
+
}
|
|
198
|
+
export interface GraphMetadata {
|
|
199
|
+
author?: string;
|
|
200
|
+
created?: string;
|
|
201
|
+
modified?: string;
|
|
202
|
+
description?: string;
|
|
203
|
+
tags?: string[];
|
|
204
|
+
notation?: string;
|
|
205
|
+
custom?: Record<string, unknown>;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=canonical-types-2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-types-2.d.ts","sourceRoot":"","sources":["../src/canonical-types-2.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,WAAW,CAAC;AAC1D,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,uBAAuB,CAAC;IACjC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACrD,MAAM,EAAE,uBAAuB,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtD,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtD,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;IACnD,iBAAiB,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;CAC9D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,CAAC;IACtE,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;IACzD,eAAe,CAAC,EAAE,CAAC,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;IAC/D,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-types-2.js","sourceRoot":"","sources":["../src/canonical-types-2.ts"],"names":[],"mappings":"AAAA,4DAA4D"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/** Canonical authored GraphIR schema 3.0.0 declarations. */
|
|
2
|
+
export interface GraphIR {
|
|
3
|
+
version: '3.0.0';
|
|
4
|
+
id: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
nodes: GraphNode[];
|
|
7
|
+
edges: GraphEdge[];
|
|
8
|
+
constraints?: SpatialConstraint[];
|
|
9
|
+
metadata?: GraphMetadata;
|
|
10
|
+
layoutOptions?: LayoutOptions;
|
|
11
|
+
profile?: NotationProfile;
|
|
12
|
+
interaction?: Interaction;
|
|
13
|
+
}
|
|
14
|
+
export interface GraphNode {
|
|
15
|
+
id: string;
|
|
16
|
+
type: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
symbol?: string;
|
|
20
|
+
variant?: string;
|
|
21
|
+
properties?: Record<string, unknown>;
|
|
22
|
+
children?: GraphNode[];
|
|
23
|
+
/** Must match the immediate enclosing node. Root nodes omit this field. */
|
|
24
|
+
parent?: string;
|
|
25
|
+
ports?: Port[];
|
|
26
|
+
/** Authored fixed outer size, never a measured layout result. */
|
|
27
|
+
dimensions?: Dimensions;
|
|
28
|
+
/** Authored exact position; nested values are parent-content-box-local. */
|
|
29
|
+
position?: Position;
|
|
30
|
+
/** A pin fixes the authored position in its declared coordinate frame. */
|
|
31
|
+
pinned?: boolean;
|
|
32
|
+
labelPlacement?: NodeLabelPlacement;
|
|
33
|
+
layoutOptions?: NodeLayoutOptions;
|
|
34
|
+
sourceInfo?: SourceInfo;
|
|
35
|
+
classifier?: Classifier;
|
|
36
|
+
}
|
|
37
|
+
export interface GraphEdge {
|
|
38
|
+
id: string;
|
|
39
|
+
source: string;
|
|
40
|
+
target: string;
|
|
41
|
+
sourcePort?: string;
|
|
42
|
+
targetPort?: string;
|
|
43
|
+
type?: string;
|
|
44
|
+
label?: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
labelPlacement?: EdgeLabelPlacement;
|
|
47
|
+
routeIntent?: RouteIntent;
|
|
48
|
+
properties?: Record<string, unknown>;
|
|
49
|
+
style?: EdgeStyle;
|
|
50
|
+
sourceInfo?: SourceInfo;
|
|
51
|
+
sourceEnd?: RelationshipEnd;
|
|
52
|
+
targetEnd?: RelationshipEnd;
|
|
53
|
+
}
|
|
54
|
+
export type PlacementSide = 'above' | 'below' | 'left' | 'right' | 'center';
|
|
55
|
+
export interface NodeLabelPlacement {
|
|
56
|
+
side: PlacementSide;
|
|
57
|
+
offset?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface EdgeLabelPlacement {
|
|
60
|
+
side: PlacementSide;
|
|
61
|
+
at?: number;
|
|
62
|
+
offset?: number;
|
|
63
|
+
}
|
|
64
|
+
export type ConstraintStrength = 'required' | 'preferred';
|
|
65
|
+
export type ConstraintAlignment = 'start' | 'center' | 'end';
|
|
66
|
+
export type ConstraintNodeReference = {
|
|
67
|
+
kind: 'node';
|
|
68
|
+
nodeId: string;
|
|
69
|
+
};
|
|
70
|
+
export type BoundaryScope = {
|
|
71
|
+
kind: 'graph';
|
|
72
|
+
} | {
|
|
73
|
+
kind: 'node';
|
|
74
|
+
nodeId: string;
|
|
75
|
+
};
|
|
76
|
+
export interface ConstraintBase {
|
|
77
|
+
id: string;
|
|
78
|
+
strength?: ConstraintStrength;
|
|
79
|
+
sourceInfo?: SourceInfo;
|
|
80
|
+
}
|
|
81
|
+
export interface RelativeConstraint extends ConstraintBase {
|
|
82
|
+
kind: 'relative';
|
|
83
|
+
subject: ConstraintNodeReference;
|
|
84
|
+
relation: 'above' | 'below' | 'left-of' | 'right-of';
|
|
85
|
+
target: ConstraintNodeReference;
|
|
86
|
+
gap?: number;
|
|
87
|
+
alignment?: ConstraintAlignment;
|
|
88
|
+
}
|
|
89
|
+
export interface BoundaryConstraint extends ConstraintBase {
|
|
90
|
+
kind: 'boundary';
|
|
91
|
+
subject: ConstraintNodeReference;
|
|
92
|
+
side: 'top' | 'bottom' | 'left' | 'right';
|
|
93
|
+
scope: BoundaryScope;
|
|
94
|
+
inset?: number;
|
|
95
|
+
}
|
|
96
|
+
export interface ArrangementConstraint extends ConstraintBase {
|
|
97
|
+
kind: 'arrangement';
|
|
98
|
+
subjects: ConstraintNodeReference[];
|
|
99
|
+
axis: 'row' | 'column';
|
|
100
|
+
direction?: 'forward' | 'reverse';
|
|
101
|
+
gap?: number;
|
|
102
|
+
alignment?: ConstraintAlignment;
|
|
103
|
+
}
|
|
104
|
+
export type SpatialConstraint = RelativeConstraint | BoundaryConstraint | ArrangementConstraint;
|
|
105
|
+
export type RouteAnchor = {
|
|
106
|
+
kind: 'source';
|
|
107
|
+
} | {
|
|
108
|
+
kind: 'target';
|
|
109
|
+
} | {
|
|
110
|
+
kind: 'node';
|
|
111
|
+
nodeId: string;
|
|
112
|
+
} | {
|
|
113
|
+
kind: 'port';
|
|
114
|
+
nodeId: string;
|
|
115
|
+
portId: string;
|
|
116
|
+
};
|
|
117
|
+
export type WaypointPlacement = {
|
|
118
|
+
kind: 'absolute';
|
|
119
|
+
position: Position;
|
|
120
|
+
} | {
|
|
121
|
+
kind: 'relative';
|
|
122
|
+
anchor: RouteAnchor;
|
|
123
|
+
offset: Position;
|
|
124
|
+
};
|
|
125
|
+
export interface RouteWaypoint {
|
|
126
|
+
id: string;
|
|
127
|
+
placement: WaypointPlacement;
|
|
128
|
+
}
|
|
129
|
+
export interface RouteIntent {
|
|
130
|
+
waypoints: RouteWaypoint[];
|
|
131
|
+
}
|
|
132
|
+
export interface Port {
|
|
133
|
+
id: string;
|
|
134
|
+
side: PortSide;
|
|
135
|
+
label?: string;
|
|
136
|
+
position?: number;
|
|
137
|
+
properties?: Record<string, unknown>;
|
|
138
|
+
}
|
|
139
|
+
export type PortSide = 'NORTH' | 'SOUTH' | 'EAST' | 'WEST';
|
|
140
|
+
export interface Dimensions {
|
|
141
|
+
width: number;
|
|
142
|
+
height: number;
|
|
143
|
+
}
|
|
144
|
+
export interface Position {
|
|
145
|
+
x: number;
|
|
146
|
+
y: number;
|
|
147
|
+
}
|
|
148
|
+
export interface EdgeStyle {
|
|
149
|
+
lineStyle?: 'solid' | 'dashed' | 'dotted';
|
|
150
|
+
routing?: 'orthogonal' | 'polyline' | 'spline';
|
|
151
|
+
}
|
|
152
|
+
export type NotationProfile = {
|
|
153
|
+
id: 'uml';
|
|
154
|
+
kind: 'class';
|
|
155
|
+
version: '1.0.0';
|
|
156
|
+
} | {
|
|
157
|
+
id: 'uml';
|
|
158
|
+
kind: 'sequence';
|
|
159
|
+
version: '1.0.0';
|
|
160
|
+
};
|
|
161
|
+
export type ClassifierKind = 'class' | 'interface' | 'enum';
|
|
162
|
+
export type Visibility = 'public' | 'protected' | 'private' | 'package';
|
|
163
|
+
export type ClassifierModifier = 'abstract' | 'static';
|
|
164
|
+
export type MemberModifier = 'abstract' | 'static' | 'readonly' | 'derived';
|
|
165
|
+
export interface Classifier {
|
|
166
|
+
kind: ClassifierKind;
|
|
167
|
+
name: string;
|
|
168
|
+
modifiers?: ClassifierModifier[];
|
|
169
|
+
compartments: ClassifierCompartment[];
|
|
170
|
+
}
|
|
171
|
+
export type ClassifierCompartment = {
|
|
172
|
+
id: string;
|
|
173
|
+
kind: 'name';
|
|
174
|
+
} | {
|
|
175
|
+
id: string;
|
|
176
|
+
kind: 'attributes';
|
|
177
|
+
items: ClassifierAttribute[];
|
|
178
|
+
} | {
|
|
179
|
+
id: string;
|
|
180
|
+
kind: 'operations';
|
|
181
|
+
items: ClassifierOperation[];
|
|
182
|
+
} | {
|
|
183
|
+
id: string;
|
|
184
|
+
kind: 'literals';
|
|
185
|
+
items: ClassifierLiteral[];
|
|
186
|
+
};
|
|
187
|
+
export interface ClassifierAttribute {
|
|
188
|
+
id: string;
|
|
189
|
+
kind: 'attribute';
|
|
190
|
+
visibility?: Visibility;
|
|
191
|
+
name: string;
|
|
192
|
+
type?: string;
|
|
193
|
+
modifiers?: MemberModifier[];
|
|
194
|
+
}
|
|
195
|
+
export interface ClassifierOperation {
|
|
196
|
+
id: string;
|
|
197
|
+
kind: 'operation';
|
|
198
|
+
visibility?: Visibility;
|
|
199
|
+
name: string;
|
|
200
|
+
parameters: ClassifierParameter[];
|
|
201
|
+
returnType?: string;
|
|
202
|
+
modifiers?: MemberModifier[];
|
|
203
|
+
}
|
|
204
|
+
export interface ClassifierParameter {
|
|
205
|
+
name: string;
|
|
206
|
+
type?: string;
|
|
207
|
+
}
|
|
208
|
+
export interface ClassifierLiteral {
|
|
209
|
+
id: string;
|
|
210
|
+
kind: 'literal';
|
|
211
|
+
name: string;
|
|
212
|
+
value?: string;
|
|
213
|
+
}
|
|
214
|
+
export interface RelationshipEnd {
|
|
215
|
+
role?: string;
|
|
216
|
+
multiplicity?: Multiplicity;
|
|
217
|
+
navigability?: 'navigable' | 'non-navigable' | 'unspecified';
|
|
218
|
+
marker?: EndpointMarker;
|
|
219
|
+
}
|
|
220
|
+
export interface Multiplicity {
|
|
221
|
+
lower: number;
|
|
222
|
+
upper: number | '*';
|
|
223
|
+
}
|
|
224
|
+
export interface EndpointMarker {
|
|
225
|
+
kind: 'none' | 'arrow' | 'triangle' | 'diamond' | 'circle' | 'bar' | 'crow-foot' | 'zero-or-one' | 'one' | 'zero-or-many' | 'one-or-many';
|
|
226
|
+
fill: 'open' | 'filled' | 'unspecified';
|
|
227
|
+
}
|
|
228
|
+
export interface Interaction {
|
|
229
|
+
participants: InteractionParticipant[];
|
|
230
|
+
participantOrder: string[];
|
|
231
|
+
messages: InteractionMessage[];
|
|
232
|
+
messageOrder: string[];
|
|
233
|
+
activations?: InteractionActivation[];
|
|
234
|
+
fragments?: InteractionFragment[];
|
|
235
|
+
notes?: InteractionNote[];
|
|
236
|
+
}
|
|
237
|
+
export interface InteractionParticipant {
|
|
238
|
+
id: string;
|
|
239
|
+
nodeId: string;
|
|
240
|
+
}
|
|
241
|
+
export interface InteractionMessage {
|
|
242
|
+
id: string;
|
|
243
|
+
edgeId: string;
|
|
244
|
+
sourceParticipantId: string;
|
|
245
|
+
targetParticipantId: string;
|
|
246
|
+
kind?: 'synchronous' | 'asynchronous' | 'return' | 'create' | 'destroy';
|
|
247
|
+
}
|
|
248
|
+
export interface InteractionActivation {
|
|
249
|
+
id: string;
|
|
250
|
+
participantId: string;
|
|
251
|
+
startMessageId: string;
|
|
252
|
+
endMessageId: string;
|
|
253
|
+
}
|
|
254
|
+
export interface InteractionFragment {
|
|
255
|
+
id: string;
|
|
256
|
+
kind: 'loop' | 'alt' | 'opt';
|
|
257
|
+
operands: InteractionOperand[];
|
|
258
|
+
}
|
|
259
|
+
export interface InteractionOperand {
|
|
260
|
+
id: string;
|
|
261
|
+
guard?: InteractionGuard;
|
|
262
|
+
messageIds: string[];
|
|
263
|
+
}
|
|
264
|
+
export interface InteractionGuard {
|
|
265
|
+
id: string;
|
|
266
|
+
text: string;
|
|
267
|
+
}
|
|
268
|
+
export interface InteractionNote {
|
|
269
|
+
id: string;
|
|
270
|
+
text: string;
|
|
271
|
+
participantIds?: string[];
|
|
272
|
+
messageIds?: string[];
|
|
273
|
+
}
|
|
274
|
+
export interface LayoutOptions {
|
|
275
|
+
algorithm?: 'layered' | 'force' | 'radial' | 'tree' | 'fixed';
|
|
276
|
+
direction?: 'DOWN' | 'UP' | 'LEFT' | 'RIGHT';
|
|
277
|
+
spacing?: SpacingOptions;
|
|
278
|
+
edgeRouting?: 'orthogonal' | 'polyline' | 'spline';
|
|
279
|
+
hierarchyHandling?: 'INCLUDE_CHILDREN' | 'SEPARATE_CHILDREN';
|
|
280
|
+
}
|
|
281
|
+
export interface SpacingOptions {
|
|
282
|
+
nodeNode?: number;
|
|
283
|
+
nodeEdge?: number;
|
|
284
|
+
edgeEdge?: number;
|
|
285
|
+
layerSpacing?: number;
|
|
286
|
+
}
|
|
287
|
+
export interface NodeLayoutOptions {
|
|
288
|
+
portConstraints?: 'FREE' | 'FIXED_SIDE' | 'FIXED_ORDER' | 'FIXED_POS';
|
|
289
|
+
portAlignment?: 'BEGIN' | 'CENTER' | 'END' | 'JUSTIFIED';
|
|
290
|
+
sizeConstraints?: ('MINIMUM_SIZE' | 'NODE_LABELS' | 'PORTS')[];
|
|
291
|
+
minimumSize?: Dimensions;
|
|
292
|
+
padding?: Padding;
|
|
293
|
+
}
|
|
294
|
+
export interface Padding {
|
|
295
|
+
top?: number;
|
|
296
|
+
right?: number;
|
|
297
|
+
bottom?: number;
|
|
298
|
+
left?: number;
|
|
299
|
+
}
|
|
300
|
+
export interface SourceInfo {
|
|
301
|
+
range: SourceRange;
|
|
302
|
+
leadingComments?: Comment[];
|
|
303
|
+
trailingComment?: Comment;
|
|
304
|
+
leadingWhitespace?: string;
|
|
305
|
+
modified?: boolean;
|
|
306
|
+
originalText?: string;
|
|
307
|
+
}
|
|
308
|
+
export interface SourceRange {
|
|
309
|
+
start: number;
|
|
310
|
+
end: number;
|
|
311
|
+
startPosition?: SourcePosition;
|
|
312
|
+
endPosition?: SourcePosition;
|
|
313
|
+
}
|
|
314
|
+
export interface SourcePosition {
|
|
315
|
+
line: number;
|
|
316
|
+
column: number;
|
|
317
|
+
}
|
|
318
|
+
export interface Comment {
|
|
319
|
+
text: string;
|
|
320
|
+
style: 'line' | 'block';
|
|
321
|
+
range?: SourceRange;
|
|
322
|
+
}
|
|
323
|
+
export interface GraphMetadata {
|
|
324
|
+
author?: string;
|
|
325
|
+
created?: string;
|
|
326
|
+
modified?: string;
|
|
327
|
+
description?: string;
|
|
328
|
+
tags?: string[];
|
|
329
|
+
notation?: string;
|
|
330
|
+
custom?: Record<string, unknown>;
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=canonical-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-types.d.ts","sourceRoot":"","sources":["../src/canonical-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-types.js","sourceRoot":"","sources":["../src/canonical-types.ts"],"names":[],"mappings":"AAAA,4DAA4D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../src/generation/id-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0CH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkB1C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM1C;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAqB;IAEpC,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAA6B;IAE7C,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK/B;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAKzD;;;;;;OAMG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../src/generation/id-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0CH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkB1C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM1C;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAqB;IAEpC,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAA6B;IAE7C,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK/B;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAKzD;;;;;;OAMG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAY1C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAwBzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,UAAU;CAYnB"}
|
|
@@ -130,9 +130,13 @@ export class IdGenerator {
|
|
|
130
130
|
* gen.generateSequential('edge'); // 'edge-2'
|
|
131
131
|
*/
|
|
132
132
|
generateSequential(prefix) {
|
|
133
|
-
|
|
133
|
+
let count = this.sequentialCounters.get(prefix) ?? 0;
|
|
134
|
+
let id;
|
|
135
|
+
do {
|
|
136
|
+
count += 1;
|
|
137
|
+
id = `${prefix}-${count}`;
|
|
138
|
+
} while (this.usedIds.has(id));
|
|
134
139
|
this.sequentialCounters.set(prefix, count);
|
|
135
|
-
const id = `${prefix}-${count}`;
|
|
136
140
|
this.usedIds.add(id);
|
|
137
141
|
return id;
|
|
138
142
|
}
|
|
@@ -156,6 +160,10 @@ export class IdGenerator {
|
|
|
156
160
|
if (num >= currentCount) {
|
|
157
161
|
this.idCounts.set(base, num);
|
|
158
162
|
}
|
|
163
|
+
const sequentialCount = this.sequentialCounters.get(base) ?? 0;
|
|
164
|
+
if (num > sequentialCount) {
|
|
165
|
+
this.sequentialCounters.set(base, num);
|
|
166
|
+
}
|
|
159
167
|
}
|
|
160
168
|
else {
|
|
161
169
|
// Reserve the base ID
|
|
@@ -177,15 +185,13 @@ export class IdGenerator {
|
|
|
177
185
|
* Make a base ID unique by adding a suffix if needed
|
|
178
186
|
*/
|
|
179
187
|
makeUnique(baseId) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
id = baseId
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
id = `${baseId}-${count + 1}`;
|
|
188
|
+
let ordinal = (this.idCounts.get(baseId) ?? 0) + 1;
|
|
189
|
+
let id = ordinal === 1 ? baseId : `${baseId}-${ordinal}`;
|
|
190
|
+
while (this.usedIds.has(id)) {
|
|
191
|
+
ordinal += 1;
|
|
192
|
+
id = `${baseId}-${ordinal}`;
|
|
188
193
|
}
|
|
194
|
+
this.idCounts.set(baseId, ordinal);
|
|
189
195
|
this.usedIds.add(id);
|
|
190
196
|
return id;
|
|
191
197
|
}
|