@graph-ir/core 0.2.1 → 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/dist/types.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  * graph-ir specification. Runtime validation result types are defined here.
6
6
  */
7
7
  export type * from './canonical-types.js';
8
+ export type { GraphIR as GraphIR2 } from './canonical-types-2.js';
8
9
  export interface ValidationResult {
9
10
  valid: boolean;
10
11
  errors: ValidationError[];
@@ -22,7 +23,7 @@ export interface ValidationError {
22
23
  severity: 'error' | 'warning';
23
24
  suggestion?: string;
24
25
  }
25
- export type ErrorCode = 'INVALID_JSON' | 'INVALID_VALIDATION_OPTIONS' | 'SCHEMA_VIOLATION' | 'UNSUPPORTED_SCHEMA_VERSION' | 'RETIRED_FIELD' | 'PIN_REQUIRES_POSITION' | 'INVALID_LABEL_PLACEMENT' | 'DUPLICATE_NODE_ID' | 'DUPLICATE_EDGE_ID' | 'DUPLICATE_CONSTRAINT_ID' | 'DUPLICATE_PORT_ID' | 'DUPLICATE_WAYPOINT_ID' | 'INVALID_ARRANGEMENT' | 'INVALID_EDGE_SOURCE' | 'INVALID_EDGE_TARGET' | 'INVALID_PORT_REFERENCE' | 'INVALID_CONSTRAINT_REFERENCE' | 'INVALID_ROUTE_NODE_REFERENCE' | 'INVALID_ROUTE_PORT_REFERENCE' | 'INVALID_PARENT_REFERENCE' | 'INVALID_ROOT_PARENT' | 'INVALID_BOUNDARY_SCOPE' | 'SELF_RELATION' | 'REQUIRED_CONTRADICTION' | 'CYCLIC_HIERARCHY' | 'INVALID_SOURCE_RANGE';
26
+ export type ErrorCode = 'INVALID_JSON' | 'INVALID_VALIDATION_OPTIONS' | 'SCHEMA_VIOLATION' | 'UNSUPPORTED_SCHEMA_VERSION' | 'RETIRED_FIELD' | 'PIN_REQUIRES_POSITION' | 'INVALID_LABEL_PLACEMENT' | 'DUPLICATE_NODE_ID' | 'DUPLICATE_EDGE_ID' | 'DUPLICATE_CONSTRAINT_ID' | 'DUPLICATE_PORT_ID' | 'DUPLICATE_WAYPOINT_ID' | 'INVALID_ARRANGEMENT' | 'INVALID_EDGE_SOURCE' | 'INVALID_EDGE_TARGET' | 'INVALID_PORT_REFERENCE' | 'INVALID_CONSTRAINT_REFERENCE' | 'INVALID_ROUTE_NODE_REFERENCE' | 'INVALID_ROUTE_PORT_REFERENCE' | 'INVALID_PARENT_REFERENCE' | 'INVALID_ROOT_PARENT' | 'INVALID_BOUNDARY_SCOPE' | 'SELF_RELATION' | 'REQUIRED_CONTRADICTION' | 'CYCLIC_HIERARCHY' | 'INVALID_SOURCE_RANGE' | 'DUPLICATE_CLASSIFIER_ID' | 'DUPLICATE_INTERACTION_ID' | 'INVALID_INTERACTION_REFERENCE' | 'WRONG_INTERACTION_REFERENCE_KIND' | 'INTERACTION_EDGE_ENDPOINT_MISMATCH' | 'INCOMPLETE_INTERACTION_ORDER' | 'ACTIVATION_PARTICIPANT_MISMATCH' | 'REVERSED_ACTIVATION_SPAN' | 'DUPLICATE_OPERAND_MEMBERSHIP' | 'INVALID_OPERAND_ORDER' | 'INVALID_NOTE_TARGET' | 'PROFILE_CONTRADICTION' | 'MARKER_MULTIPLICITY_MISMATCH' | 'INVALID_MULTIPLICITY_BOUNDS';
26
27
  export type WarningCode = 'SELF_LOOP_EDGE' | 'ORPHAN_NODE' | 'ORPHAN_PORT' | 'STALE_SOURCE_INFO';
27
28
  export type ValidationMode = 'full' | 'schema' | 'semantic';
28
29
  export interface ValidationOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mBAAmB,sBAAsB,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,4BAA4B,GAC5B,kBAAkB,GAClB,4BAA4B,GAC5B,eAAe,GACf,uBAAuB,GACvB,yBAAyB,GACzB,mBAAmB,GACnB,mBAAmB,GACnB,yBAAyB,GACzB,mBAAmB,GACnB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,8BAA8B,GAC9B,8BAA8B,GAC9B,8BAA8B,GAC9B,0BAA0B,GAC1B,qBAAqB,GACrB,wBAAwB,GACxB,eAAe,GACf,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,mBAAmB,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mBAAmB,sBAAsB,CAAC;AAC1C,YAAY,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,4BAA4B,GAC5B,kBAAkB,GAClB,4BAA4B,GAC5B,eAAe,GACf,uBAAuB,GACvB,yBAAyB,GACzB,mBAAmB,GACnB,mBAAmB,GACnB,yBAAyB,GACzB,mBAAmB,GACnB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,8BAA8B,GAC9B,8BAA8B,GAC9B,8BAA8B,GAC9B,0BAA0B,GAC1B,qBAAqB,GACrB,wBAAwB,GACxB,eAAe,GACf,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,GACtB,yBAAyB,GACzB,0BAA0B,GAC1B,+BAA+B,GAC/B,kCAAkC,GAClC,oCAAoC,GACpC,8BAA8B,GAC9B,iCAAiC,GACjC,0BAA0B,GAC1B,8BAA8B,GAC9B,uBAAuB,GACvB,qBAAqB,GACrB,uBAAuB,GACvB,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,mBAAmB,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
@@ -9,6 +9,14 @@ export declare class IRValidator {
9
9
  private normalizeSchemaErrors;
10
10
  private pathHasPinnedNode;
11
11
  private validateSemantic;
12
+ private validatePortableSemantics;
13
+ private validateInteraction;
14
+ private indexEntities;
15
+ private validateCompleteOrder;
16
+ private referenceError;
17
+ private asRecord;
18
+ private asArray;
19
+ private stringArray;
12
20
  private validateEdge;
13
21
  private validateConstraints;
14
22
  private validateDirectionalContradictions;
@@ -1 +1 @@
1
- {"version":3,"file":"ir-validator.d.ts","sourceRoot":"","sources":["../../src/validation/ir-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EASV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAsBrB,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,OAAO,GAAE,iBAAsB;IAW3C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAgBxD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IA6C1C,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAwExB,OAAO,CAAC,YAAY;IA4DpB,OAAO,CAAC,mBAAmB;IAqE3B,OAAO,CAAC,iCAAiC;IAsCzC,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,WAAW;CAmBpB"}
1
+ {"version":3,"file":"ir-validator.d.ts","sourceRoot":"","sources":["../../src/validation/ir-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EASV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAsBrB,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,OAAO,GAAE,iBAAsB;IAW3C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAgBxD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IA6C1C,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IA0ExB,OAAO,CAAC,yBAAyB;IAoHjC,OAAO,CAAC,mBAAmB;IA+K3B,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IA4DpB,OAAO,CAAC,mBAAmB;IAqE3B,OAAO,CAAC,iCAAiC;IAsCzC,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,WAAW;CAmBpB"}
@@ -162,11 +162,271 @@ export class IRValidator {
162
162
  edgeIds.add(edge.id);
163
163
  this.validateEdge(edge, path, nodeById, errors);
164
164
  });
165
+ this.validatePortableSemantics(graph, entries, nodeById, errors);
165
166
  const constraints = Array.isArray(graph.constraints) ? graph.constraints : [];
166
167
  this.validateConstraints(constraints, nodeById, errors);
167
168
  this.validateDirectionalContradictions(constraints, nodeById, errors);
168
169
  this.addWarnings(graph, entries, warnings);
169
170
  }
171
+ validatePortableSemantics(graph, entries, nodeById, errors) {
172
+ const record = graph;
173
+ const profile = this.asRecord(record.profile);
174
+ const metadata = this.asRecord(record.metadata);
175
+ if (profile) {
176
+ const expectedNotation = profile.kind === 'class' ? 'uml-class'
177
+ : profile.kind === 'sequence' ? 'uml-sequence' : undefined;
178
+ const recognizedNotation = metadata?.notation === 'uml-class' ||
179
+ metadata?.notation === 'uml-sequence';
180
+ if (expectedNotation && recognizedNotation && metadata?.notation !== expectedNotation) {
181
+ errors.push(this.error('PROFILE_CONTRADICTION', '/metadata/notation', `Notation ${metadata.notation} contradicts profile ${profile.kind}`));
182
+ }
183
+ const custom = this.asRecord(metadata?.custom);
184
+ const expectedDiagramType = profile.kind === 'class' ? 'class'
185
+ : profile.kind === 'sequence' ? 'sequence' : undefined;
186
+ const recognizedDiagramType = custom?.diagramType === 'class' ||
187
+ custom?.diagramType === 'sequence';
188
+ if (expectedDiagramType && recognizedDiagramType &&
189
+ custom?.diagramType !== expectedDiagramType) {
190
+ errors.push(this.error('PROFILE_CONTRADICTION', '/metadata/custom/diagramType', `Diagram type ${custom.diagramType} contradicts profile ${profile.kind}`));
191
+ }
192
+ }
193
+ for (const entry of entries) {
194
+ const classifier = this.asRecord(entry.node.classifier);
195
+ if (!classifier)
196
+ continue;
197
+ if (profile?.kind !== 'class') {
198
+ errors.push(this.error('PROFILE_CONTRADICTION', `${entry.path}/classifier`, 'Classifier records require the UML class profile'));
199
+ }
200
+ const compartmentIds = new Set();
201
+ const itemIds = new Set();
202
+ this.asArray(classifier.compartments).forEach((value, compartmentIndex) => {
203
+ const compartment = this.asRecord(value);
204
+ if (!compartment)
205
+ return;
206
+ if (typeof compartment.id === 'string') {
207
+ if (compartmentIds.has(compartment.id)) {
208
+ errors.push(this.error('DUPLICATE_CLASSIFIER_ID', `${entry.path}/classifier/compartments/${compartmentIndex}/id`, `Duplicate classifier compartment ID ${compartment.id}`));
209
+ }
210
+ compartmentIds.add(compartment.id);
211
+ }
212
+ this.asArray(compartment.items).forEach((itemValue, itemIndex) => {
213
+ const item = this.asRecord(itemValue);
214
+ if (!item || typeof item.id !== 'string')
215
+ return;
216
+ if (itemIds.has(item.id)) {
217
+ errors.push(this.error('DUPLICATE_CLASSIFIER_ID', `${entry.path}/classifier/compartments/${compartmentIndex}/items/${itemIndex}/id`, `Duplicate classifier item ID ${item.id}`));
218
+ }
219
+ itemIds.add(item.id);
220
+ });
221
+ });
222
+ }
223
+ graph.edges.forEach((edge, edgeIndex) => {
224
+ const edgeRecord = edge;
225
+ for (const endName of ['sourceEnd', 'targetEnd']) {
226
+ const end = this.asRecord(edgeRecord[endName]);
227
+ const multiplicity = this.asRecord(end?.multiplicity);
228
+ const marker = this.asRecord(end?.marker);
229
+ const base = `/edges/${edgeIndex}/${endName}`;
230
+ if (multiplicity && typeof multiplicity.lower === 'number' &&
231
+ typeof multiplicity.upper === 'number' &&
232
+ multiplicity.upper < multiplicity.lower) {
233
+ errors.push(this.error('INVALID_MULTIPLICITY_BOUNDS', `${base}/multiplicity/upper`, 'Multiplicity upper bound must not be less than lower bound'));
234
+ }
235
+ const bounds = {
236
+ 'zero-or-one': [0, 1], one: [1, 1],
237
+ 'zero-or-many': [0, '*'], 'one-or-many': [1, '*'],
238
+ };
239
+ if (marker && typeof marker.kind === 'string' && multiplicity &&
240
+ bounds[marker.kind]) {
241
+ const [lower, upper] = bounds[marker.kind];
242
+ if (multiplicity.lower !== lower || multiplicity.upper !== upper) {
243
+ errors.push(this.error('MARKER_MULTIPLICITY_MISMATCH', `${base}/marker/kind`, `Marker ${marker.kind} contradicts the declared multiplicity`));
244
+ }
245
+ }
246
+ }
247
+ });
248
+ const interaction = this.asRecord(record.interaction);
249
+ if (!interaction)
250
+ return;
251
+ if (profile?.kind !== 'sequence') {
252
+ errors.push(this.error('PROFILE_CONTRADICTION', '/interaction', 'Interaction records require the UML sequence profile'));
253
+ }
254
+ this.validateInteraction(interaction, nodeById, graph, errors);
255
+ }
256
+ validateInteraction(interaction, nodeById, graph, errors) {
257
+ const participants = this.asArray(interaction.participants);
258
+ const messages = this.asArray(interaction.messages);
259
+ const activations = this.asArray(interaction.activations);
260
+ const fragments = this.asArray(interaction.fragments);
261
+ const notes = this.asArray(interaction.notes);
262
+ const participantById = this.indexEntities(participants, '/interaction/participants', 'participant', errors);
263
+ const messageById = this.indexEntities(messages, '/interaction/messages', 'message', errors);
264
+ const edgeById = new Map(graph.edges
265
+ .filter((edge) => edge && typeof edge === 'object' && typeof edge.id === 'string')
266
+ .map((edge) => [edge.id, edge]));
267
+ participants.forEach((value, index) => {
268
+ const participant = this.asRecord(value);
269
+ if (!participant || typeof participant.nodeId !== 'string')
270
+ return;
271
+ if (!nodeById.has(participant.nodeId)) {
272
+ errors.push(this.error('INVALID_INTERACTION_REFERENCE', `/interaction/participants/${index}/nodeId`, `Missing participant node ${participant.nodeId}`));
273
+ }
274
+ });
275
+ messages.forEach((value, index) => {
276
+ const message = this.asRecord(value);
277
+ if (!message)
278
+ return;
279
+ const path = `/interaction/messages/${index}`;
280
+ const edge = typeof message.edgeId === 'string' ? edgeById.get(message.edgeId) : undefined;
281
+ if (typeof message.edgeId === 'string' && !edge) {
282
+ errors.push(this.referenceError(message.edgeId, `${path}/edgeId`, messageById, participantById));
283
+ }
284
+ for (const key of ['sourceParticipantId', 'targetParticipantId']) {
285
+ const id = message[key];
286
+ if (typeof id !== 'string')
287
+ continue;
288
+ if (!participantById.has(id)) {
289
+ errors.push(this.referenceError(id, `${path}/${key}`, participantById, messageById));
290
+ }
291
+ }
292
+ if (edge) {
293
+ const source = typeof message.sourceParticipantId === 'string'
294
+ ? this.asRecord(participantById.get(message.sourceParticipantId)?.value) : undefined;
295
+ const target = typeof message.targetParticipantId === 'string'
296
+ ? this.asRecord(participantById.get(message.targetParticipantId)?.value) : undefined;
297
+ if (source && source.nodeId !== edge.source) {
298
+ errors.push(this.error('INTERACTION_EDGE_ENDPOINT_MISMATCH', `${path}/sourceParticipantId`, 'Message source participant does not match its graph edge source'));
299
+ }
300
+ if (target && target.nodeId !== edge.target) {
301
+ errors.push(this.error('INTERACTION_EDGE_ENDPOINT_MISMATCH', `${path}/targetParticipantId`, 'Message target participant does not match its graph edge target'));
302
+ }
303
+ }
304
+ });
305
+ const participantOrder = this.stringArray(interaction.participantOrder);
306
+ const messageOrder = this.stringArray(interaction.messageOrder);
307
+ this.validateCompleteOrder(participantOrder, participantById, '/interaction/participantOrder', errors);
308
+ this.validateCompleteOrder(messageOrder, messageById, '/interaction/messageOrder', errors);
309
+ const messagePosition = new Map(messageOrder.map((id, index) => [id, index]));
310
+ this.indexEntities(activations, '/interaction/activations', 'activation', errors);
311
+ activations.forEach((value, index) => {
312
+ const activation = this.asRecord(value);
313
+ if (!activation)
314
+ return;
315
+ const path = `/interaction/activations/${index}`;
316
+ if (typeof activation.participantId === 'string' &&
317
+ !participantById.has(activation.participantId)) {
318
+ errors.push(this.referenceError(activation.participantId, `${path}/participantId`, participantById, messageById));
319
+ }
320
+ for (const key of ['startMessageId', 'endMessageId']) {
321
+ const id = activation[key];
322
+ if (typeof id === 'string' && !messageById.has(id)) {
323
+ errors.push(this.referenceError(id, `${path}/${key}`, messageById, participantById));
324
+ }
325
+ else if (typeof id === 'string' && typeof activation.participantId === 'string') {
326
+ const message = this.asRecord(messageById.get(id)?.value);
327
+ if (message && message.sourceParticipantId !== activation.participantId &&
328
+ message.targetParticipantId !== activation.participantId) {
329
+ errors.push(this.error('ACTIVATION_PARTICIPANT_MISMATCH', `${path}/${key}`, `Activation message ${id} does not involve participant ${activation.participantId}`));
330
+ }
331
+ }
332
+ }
333
+ if (typeof activation.startMessageId === 'string' &&
334
+ typeof activation.endMessageId === 'string' &&
335
+ (messagePosition.get(activation.startMessageId) ?? -1) >
336
+ (messagePosition.get(activation.endMessageId) ?? Number.MAX_SAFE_INTEGER)) {
337
+ errors.push(this.error('REVERSED_ACTIVATION_SPAN', `${path}/startMessageId`, 'Activation start occurs after its end in messageOrder'));
338
+ }
339
+ });
340
+ this.indexEntities(fragments, '/interaction/fragments', 'fragment', errors);
341
+ const operandIds = new Set();
342
+ const guardIds = new Set();
343
+ fragments.forEach((fragmentValue, fragmentIndex) => {
344
+ const fragment = this.asRecord(fragmentValue);
345
+ if (!fragment)
346
+ return;
347
+ const memberships = new Set();
348
+ this.asArray(fragment.operands).forEach((operandValue, operandIndex) => {
349
+ const operand = this.asRecord(operandValue);
350
+ if (!operand)
351
+ return;
352
+ const path = `/interaction/fragments/${fragmentIndex}/operands/${operandIndex}`;
353
+ if (typeof operand.id === 'string') {
354
+ if (operandIds.has(operand.id))
355
+ errors.push(this.error('DUPLICATE_INTERACTION_ID', `${path}/id`, `Duplicate operand ID ${operand.id}`));
356
+ operandIds.add(operand.id);
357
+ }
358
+ const guard = this.asRecord(operand.guard);
359
+ if (guard && typeof guard.id === 'string') {
360
+ if (guardIds.has(guard.id))
361
+ errors.push(this.error('DUPLICATE_INTERACTION_ID', `${path}/guard/id`, `Duplicate guard ID ${guard.id}`));
362
+ guardIds.add(guard.id);
363
+ }
364
+ let prior = -1;
365
+ this.stringArray(operand.messageIds).forEach((id, messageIndex) => {
366
+ const referencePath = `${path}/messageIds/${messageIndex}`;
367
+ if (!messageById.has(id)) {
368
+ errors.push(this.referenceError(id, referencePath, messageById, participantById));
369
+ }
370
+ if (memberships.has(id))
371
+ errors.push(this.error('DUPLICATE_OPERAND_MEMBERSHIP', referencePath, `Message ${id} occurs in more than one operand of the fragment`));
372
+ memberships.add(id);
373
+ const position = messagePosition.get(id);
374
+ if (position !== undefined && position < prior)
375
+ errors.push(this.error('INVALID_OPERAND_ORDER', referencePath, 'Operand messages must follow global messageOrder'));
376
+ if (position !== undefined)
377
+ prior = position;
378
+ });
379
+ });
380
+ });
381
+ this.indexEntities(notes, '/interaction/notes', 'note', errors);
382
+ notes.forEach((value, index) => {
383
+ const note = this.asRecord(value);
384
+ if (!note)
385
+ return;
386
+ for (const [key, target] of [
387
+ ['participantIds', participantById], ['messageIds', messageById],
388
+ ]) {
389
+ this.stringArray(note[key]).forEach((id, targetIndex) => {
390
+ if (!target.has(id))
391
+ errors.push(this.error('INVALID_NOTE_TARGET', `/interaction/notes/${index}/${key}/${targetIndex}`, `Note target ${id} does not exist`));
392
+ });
393
+ }
394
+ });
395
+ }
396
+ indexEntities(values, path, kind, errors) {
397
+ const result = new Map();
398
+ values.forEach((value, index) => {
399
+ const record = this.asRecord(value);
400
+ if (!record || typeof record.id !== 'string')
401
+ return;
402
+ if (result.has(record.id))
403
+ errors.push(this.error('DUPLICATE_INTERACTION_ID', `${path}/${index}/id`, `Duplicate ${kind} ID ${record.id}`));
404
+ else
405
+ result.set(record.id, { value, index });
406
+ });
407
+ return result;
408
+ }
409
+ validateCompleteOrder(order, entities, path, errors) {
410
+ if (order.length !== entities.size || new Set(order).size !== order.length ||
411
+ order.some((id) => !entities.has(id))) {
412
+ errors.push(this.error('INCOMPLETE_INTERACTION_ORDER', path, 'Order must contain every corresponding entity ID exactly once'));
413
+ }
414
+ }
415
+ referenceError(id, path, expected, other) {
416
+ return this.error(other.has(id) && !expected.has(id)
417
+ ? 'WRONG_INTERACTION_REFERENCE_KIND'
418
+ : 'INVALID_INTERACTION_REFERENCE', path, `Invalid interaction reference ${id}`);
419
+ }
420
+ asRecord(value) {
421
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
422
+ ? value : undefined;
423
+ }
424
+ asArray(value) {
425
+ return Array.isArray(value) ? value : [];
426
+ }
427
+ stringArray(value) {
428
+ return this.asArray(value).filter((item) => typeof item === 'string');
429
+ }
170
430
  validateEdge(edge, path, nodeById, errors) {
171
431
  const source = typeof edge.source === 'string' ? nodeById.get(edge.source) : undefined;
172
432
  const target = typeof edge.target === 'string' ? nodeById.get(edge.target) : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ir-validator.js","sourceRoot":"","sources":["../../src/validation/ir-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ir-validator.js","sourceRoot":"","sources":["../../src/validation/ir-validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graph-ir/core",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Core utilities for Graph-IR validation, generation, and transformation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -74,5 +74,5 @@
74
74
  "url": "git+https://github.com/coreyt/graph-ir-tools.git",
75
75
  "directory": "packages/core"
76
76
  },
77
- "gitHead": "9cfec40028fd592059207a71471ee8b60d04999b"
77
+ "gitHead": "bb37a2e4af91d920b80a8ad73d1177808f6b01c7"
78
78
  }
@@ -1,9 +1,13 @@
1
1
  {
2
- "schemaVersion": "2.0.0",
3
- "sourceRepository": "https://github.com/coreyt/graph-IR.git",
4
- "sourceTag": "v0.2.1",
5
- "sourceRevision": "cbc96cf9a78a67eeb5367bc11e161a6e657fad31",
2
+ "schemaVersion": "3.0.0",
3
+ "sourceRepository": "https://github.com/coreyt/graph-ir",
4
+ "sourceTag": "v0.2.2",
5
+ "sourceTagObject": "aa3ec52e14d4d567a42cc83b42b65dba8d6d9de5",
6
+ "sourceRevision": "c23e4bfb4ff077a1fb7901106056deb39b4299c0",
7
+ "sourceReleaseRunId": "35650381659",
6
8
  "sourceState": "committed",
7
- "schemaSha256": "26145daecc6044f2d3bde89b531f5bdf16a6c9d6ca0eec18bb0798e5dee7996b",
8
- "typesSha256": "886aaad46ff67eb258ea09a1906865dc9c22faa150ba3f8d9ab515895f0c7212"
9
+ "schemaSha256": "0769a26cb4afd1d85dcad7b03be2cf35559a230603f92f3182d7af454fc4ad42",
10
+ "typesSha256": "c7af47656ba3c6eabc78ddba23247e2cf2a1d89d90367b08d6af43b0bba0755c",
11
+ "legacySchemaSha256": "26145daecc6044f2d3bde89b531f5bdf16a6c9d6ca0eec18bb0798e5dee7996b",
12
+ "legacyTypesSha256": "886aaad46ff67eb258ea09a1906865dc9c22faa150ba3f8d9ab515895f0c7212"
9
13
  }