@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.
Files changed (45) hide show
  1. package/README.md +14 -2
  2. package/dist/canonical-types-2.d.ts +207 -0
  3. package/dist/canonical-types-2.d.ts.map +1 -0
  4. package/dist/canonical-types-2.js +3 -0
  5. package/dist/canonical-types-2.js.map +1 -0
  6. package/dist/canonical-types.d.ts +332 -0
  7. package/dist/canonical-types.d.ts.map +1 -0
  8. package/dist/canonical-types.js +3 -0
  9. package/dist/canonical-types.js.map +1 -0
  10. package/dist/generation/id-generator.d.ts.map +1 -1
  11. package/dist/generation/id-generator.js +16 -10
  12. package/dist/generation/id-generator.js.map +1 -1
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/output/types.d.ts.map +1 -1
  18. package/dist/schemas/graph-ir-2.0.schema.json +416 -0
  19. package/dist/schemas/graph-ir.schema.json +1684 -228
  20. package/dist/skills/diff.d.ts +4 -0
  21. package/dist/skills/diff.d.ts.map +1 -1
  22. package/dist/skills/diff.js +93 -11
  23. package/dist/skills/diff.js.map +1 -1
  24. package/dist/skills/migrate.d.ts +48 -19
  25. package/dist/skills/migrate.d.ts.map +1 -1
  26. package/dist/skills/migrate.js +482 -239
  27. package/dist/skills/migrate.js.map +1 -1
  28. package/dist/skills/visualize.d.ts.map +1 -1
  29. package/dist/skills/visualize.js +33 -5
  30. package/dist/skills/visualize.js.map +1 -1
  31. package/dist/testing/diff.d.ts +1 -1
  32. package/dist/testing/diff.d.ts.map +1 -1
  33. package/dist/testing/diff.js +52 -19
  34. package/dist/testing/diff.js.map +1 -1
  35. package/dist/types.d.ts +13 -214
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/types.js +3 -2
  38. package/dist/types.js.map +1 -1
  39. package/dist/validation/ir-validator.d.ts +35 -44
  40. package/dist/validation/ir-validator.d.ts.map +1 -1
  41. package/dist/validation/ir-validator.js +735 -288
  42. package/dist/validation/ir-validator.js.map +1 -1
  43. package/dist/validation/validator.d.ts.map +1 -1
  44. package/package.json +9 -4
  45. 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 Graph-IR document schema and the npm package have independent versions.
22
- This package release is `0.2.0`; its current Graph-IR schema is `1.0.0`.
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":"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"}
@@ -0,0 +1,3 @@
1
+ /** Canonical authored GraphIR schema 2.0.0 declarations. */
2
+ export {};
3
+ //# sourceMappingURL=canonical-types-2.js.map
@@ -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,3 @@
1
+ /** Canonical authored GraphIR schema 3.0.0 declarations. */
2
+ export {};
3
+ //# sourceMappingURL=canonical-types.js.map
@@ -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;IAS1C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAoBzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,UAAU;CAcnB"}
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
- const count = (this.sequentialCounters.get(prefix) ?? 0) + 1;
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
- const count = this.idCounts.get(baseId) ?? 0;
181
- this.idCounts.set(baseId, count + 1);
182
- let id;
183
- if (count === 0) {
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
  }