@aranzatech/diagrams-bpmn 0.2.4 → 0.2.6

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 (43) hide show
  1. package/dist/{catalog-m8fHIiKH.d.cts → catalog-CZsXqhL9.d.cts} +1 -1
  2. package/dist/{catalog-DIBySQqA.d.ts → catalog-Clz8sN9x.d.ts} +1 -1
  3. package/dist/{chunk-33AR3PXF.js → chunk-L64NM77A.js} +290 -20
  4. package/dist/chunk-L64NM77A.js.map +1 -0
  5. package/dist/{chunk-QOGZITWB.js → chunk-M46UDUN3.js} +2 -2
  6. package/dist/{chunk-QOGZITWB.js.map → chunk-M46UDUN3.js.map} +1 -1
  7. package/dist/{chunk-7MKU37XQ.js → chunk-XTUYPA3E.js} +191 -15
  8. package/dist/chunk-XTUYPA3E.js.map +1 -0
  9. package/dist/elements/index.d.cts +3 -3
  10. package/dist/elements/index.d.ts +3 -3
  11. package/dist/index.cjs +477 -241
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +5 -5
  14. package/dist/index.d.ts +5 -5
  15. package/dist/index.js +3 -4
  16. package/dist/modeling/index.cjs +197 -10
  17. package/dist/modeling/index.cjs.map +1 -1
  18. package/dist/modeling/index.d.cts +103 -7
  19. package/dist/modeling/index.d.ts +103 -7
  20. package/dist/modeling/index.js +1 -1
  21. package/dist/simulation/index.cjs.map +1 -1
  22. package/dist/simulation/index.d.cts +36 -0
  23. package/dist/simulation/index.d.ts +36 -0
  24. package/dist/simulation/index.js +1 -1
  25. package/dist/{types-DznxZxpV.d.cts → types-BPqNeIU-.d.cts} +63 -1
  26. package/dist/{types-DznxZxpV.d.ts → types-BPqNeIU-.d.ts} +63 -1
  27. package/dist/{types-BxjCV2oX.d.ts → types-D0Flgue2.d.ts} +11 -2
  28. package/dist/{types-vVi5T7qj.d.cts → types-exnfq24-.d.cts} +11 -2
  29. package/dist/validation/index.cjs.map +1 -1
  30. package/dist/validation/index.d.cts +7 -2
  31. package/dist/validation/index.d.ts +7 -2
  32. package/dist/validation/index.js +224 -3
  33. package/dist/validation/index.js.map +1 -1
  34. package/dist/xml/index.cjs +287 -20
  35. package/dist/xml/index.cjs.map +1 -1
  36. package/dist/xml/index.d.cts +18 -2
  37. package/dist/xml/index.d.ts +18 -2
  38. package/dist/xml/index.js +1 -1
  39. package/package.json +2 -2
  40. package/dist/chunk-33AR3PXF.js.map +0 -1
  41. package/dist/chunk-7MKU37XQ.js.map +0 -1
  42. package/dist/chunk-ZFGQVLHB.js +0 -226
  43. package/dist/chunk-ZFGQVLHB.js.map +0 -1
@@ -51,9 +51,45 @@ interface SimulationState {
51
51
  /** IDs of subprocess nodes whose internal execution has started. */
52
52
  enteredScopes: string[];
53
53
  }
54
+ /**
55
+ * Initialize a new token-based simulation from all root-level start events.
56
+ *
57
+ * @param diagram - The BPMN graph to simulate (nodes + edges).
58
+ * @param initialVariables - Optional process-level variable values to seed.
59
+ * @returns Initial {@link SimulationState} with tokens placed at all start events.
60
+ */
54
61
  declare function createSimulation(diagram: SimDiagram, initialVariables?: Record<string, string | number | boolean>): SimulationState;
62
+ /**
63
+ * Advance the simulation by one step, automatically propagating all tokens
64
+ * through automated elements (gateways, auto-completing tasks, etc.).
65
+ *
66
+ * @param diagram - The BPMN graph.
67
+ * @param state - Current simulation state.
68
+ * @returns Updated state after all automatic transitions are resolved.
69
+ */
55
70
  declare function tick(diagram: SimDiagram, state: SimulationState): SimulationState;
71
+ /**
72
+ * Manually fire an element that requires user interaction (e.g. UserTask,
73
+ * IntermediateCatchEvent, BoundaryEvent). Consumes the token at the element,
74
+ * emits it along outgoing edges, then calls {@link tick} to continue automatic
75
+ * propagation.
76
+ *
77
+ * @param diagram - The BPMN graph.
78
+ * @param state - Current simulation state.
79
+ * @param elementId - Id of the element to fire.
80
+ * @param variables - Optional variables to set before firing.
81
+ * @returns Updated state after the element fires and all automatic steps resolve.
82
+ */
56
83
  declare function fire(diagram: SimDiagram, state: SimulationState, elementId: string, variables?: Record<string, string | number | boolean>): SimulationState;
84
+ /**
85
+ * Return element ids that can be manually fired in the current simulation step.
86
+ * Includes tasks that require human interaction, intermediate catch events, and
87
+ * boundary events attached to tasks that currently hold a token.
88
+ *
89
+ * @param diagram - The BPMN graph.
90
+ * @param state - Current simulation state.
91
+ * @returns Array of element ids ready to be passed to {@link fire}.
92
+ */
57
93
  declare function getFireable(diagram: SimDiagram, state: SimulationState): string[];
58
94
  declare function isCompleted(state: SimulationState): boolean;
59
95
  /** Set or update a process variable without advancing the simulation. */
@@ -1,3 +1,3 @@
1
- export { createSimulation, fire, getFireable, isCompleted, setVariable, tick } from '../chunk-QOGZITWB.js';
1
+ export { createSimulation, fire, getFireable, isCompleted, setVariable, tick } from '../chunk-M46UDUN3.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -5,6 +5,53 @@ type BpmnEventSemantics = "start" | "intermediateCatch" | "intermediateThrow" |
5
5
  type BpmnElementType = "StartEvent" | "EndEvent" | "IntermediateCatchEvent" | "IntermediateThrowEvent" | "BoundaryEvent" | "Task" | "UserTask" | "ServiceTask" | "ScriptTask" | "ManualTask" | "BusinessRuleTask" | "ReceiveTask" | "SendTask" | "CallActivity" | "ExclusiveGateway" | "InclusiveGateway" | "ParallelGateway" | "EventBasedGateway" | "ComplexGateway" | "SubProcess" | "Transaction" | "EventSubProcess" | "AdHocSubProcess" | "Pool" | "Lane" | "Annotation" | "Group" | "DataObject" | "DataObjectReference" | "DataInput" | "DataOutput" | "DataStore" | "DataStoreReference" | "Conversation" | "SubConversation" | "CallConversation" | "ChoreographyTask" | "SubChoreography" | "CallChoreography";
6
6
  type BpmnEdgeType = "sequenceFlow" | "messageFlow" | "association" | "dataAssociation" | "conversationLink";
7
7
  type EventTrigger = "none" | "message" | "timer" | "escalation" | "conditional" | "error" | "cancel" | "compensation" | "signal" | "link" | "terminate" | "multiple" | "parallelMultiple";
8
+ type BpmnTimerKind = "date" | "duration" | "cycle";
9
+ interface BpmnTimerDefinition {
10
+ kind: BpmnTimerKind;
11
+ value: string;
12
+ }
13
+ interface BpmnMessageDefinition {
14
+ id: string;
15
+ name: string;
16
+ }
17
+ interface BpmnSignalDefinition {
18
+ id: string;
19
+ name: string;
20
+ }
21
+ interface BpmnErrorDefinition {
22
+ id: string;
23
+ name: string;
24
+ errorCode?: string;
25
+ }
26
+ interface BpmnEscalationDefinition {
27
+ id: string;
28
+ name: string;
29
+ escalationCode?: string;
30
+ }
31
+ interface BpmnProcessVariable {
32
+ id: string;
33
+ name: string;
34
+ type: "string" | "integer" | "boolean" | "date" | "object" | "array";
35
+ defaultValue?: string;
36
+ description?: string;
37
+ }
38
+ interface BpmnDefinitionsSet {
39
+ messages?: BpmnMessageDefinition[];
40
+ signals?: BpmnSignalDefinition[];
41
+ errors?: BpmnErrorDefinition[];
42
+ escalations?: BpmnEscalationDefinition[];
43
+ variables?: BpmnProcessVariable[];
44
+ }
45
+ interface BpmnEventDefinition extends Record<string, unknown> {
46
+ type: EventTrigger;
47
+ timer?: BpmnTimerDefinition;
48
+ messageRef?: string;
49
+ signalRef?: string;
50
+ errorRef?: string;
51
+ escalationRef?: string;
52
+ conditionExpression?: string;
53
+ linkName?: string;
54
+ }
8
55
  type TaskMarker = "loop" | "parallelMultiple" | "sequentialMultiple" | "compensation";
9
56
  type SubProcessVariant = "embedded" | "event" | "transaction" | "adhoc";
10
57
  interface BpmnElementMeta {
@@ -59,10 +106,23 @@ interface BpmnNodeData extends Record<string, unknown> {
59
106
  };
60
107
  /** Event trigger symbol rendered inside the event circle. */
61
108
  trigger?: EventTrigger;
109
+ /** Unified event definition payload used for BPMN 2.0 serialization and UI. */
110
+ eventDefinition?: BpmnEventDefinition;
62
111
  /** True for non-interrupting boundary events / event sub-process starts. */
63
112
  isNonInterrupting?: boolean;
64
113
  /** BoundaryEvent only: BPMN element id this boundary event is attached to. */
65
114
  attachedToRef?: string;
115
+ /** Compatibility alias used by older Aranza editors. */
116
+ cancelActivity?: boolean;
117
+ /** Legacy flat event fields kept during migration to eventDefinition. */
118
+ timer?: BpmnTimerDefinition;
119
+ timerExpression?: BpmnTimerDefinition;
120
+ messageRef?: string;
121
+ signalRef?: string;
122
+ errorRef?: string;
123
+ escalationRef?: string;
124
+ conditionExpression?: string;
125
+ linkName?: string;
66
126
  /** Raw BPMN documentation text. */
67
127
  documentation?: string;
68
128
  /** Task instance markers shown at the bottom of the task box. */
@@ -85,6 +145,8 @@ interface BpmnNodeData extends Record<string, unknown> {
85
145
  * (renders three parallel lines at the bottom, per BPMN 2.0 §10.3.1).
86
146
  */
87
147
  isCollection?: boolean;
148
+ /** CallActivity: id of the referenced called element (process or global task). */
149
+ calledElement?: string;
88
150
  /** aranzaflows namespace extensions. */
89
151
  priority?: "critical" | "high" | "medium" | "low";
90
152
  owner?: string;
@@ -108,4 +170,4 @@ interface BpmnEdgeData extends Record<string, unknown> {
108
170
  }>;
109
171
  }
110
172
 
111
- export type { BpmnCategory as B, EventTrigger as E, SubProcessVariant as S, TaskMarker as T, BpmnEdgeData as a, BpmnEdgeType as b, BpmnElementMeta as c, BpmnElementSize as d, BpmnElementType as e, BpmnEventSemantics as f, BpmnHandlePolicy as g, BpmnNodeData as h, BpmnOrientation as i };
173
+ export type { BpmnCategory as B, EventTrigger as E, SubProcessVariant as S, TaskMarker as T, BpmnDefinitionsSet as a, BpmnEdgeData as b, BpmnEdgeType as c, BpmnElementMeta as d, BpmnElementSize as e, BpmnElementType as f, BpmnErrorDefinition as g, BpmnEscalationDefinition as h, BpmnEventDefinition as i, BpmnEventSemantics as j, BpmnHandlePolicy as k, BpmnMessageDefinition as l, BpmnNodeData as m, BpmnOrientation as n, BpmnProcessVariable as o, BpmnSignalDefinition as p, BpmnTimerDefinition as q, BpmnTimerKind as r };
@@ -5,6 +5,53 @@ type BpmnEventSemantics = "start" | "intermediateCatch" | "intermediateThrow" |
5
5
  type BpmnElementType = "StartEvent" | "EndEvent" | "IntermediateCatchEvent" | "IntermediateThrowEvent" | "BoundaryEvent" | "Task" | "UserTask" | "ServiceTask" | "ScriptTask" | "ManualTask" | "BusinessRuleTask" | "ReceiveTask" | "SendTask" | "CallActivity" | "ExclusiveGateway" | "InclusiveGateway" | "ParallelGateway" | "EventBasedGateway" | "ComplexGateway" | "SubProcess" | "Transaction" | "EventSubProcess" | "AdHocSubProcess" | "Pool" | "Lane" | "Annotation" | "Group" | "DataObject" | "DataObjectReference" | "DataInput" | "DataOutput" | "DataStore" | "DataStoreReference" | "Conversation" | "SubConversation" | "CallConversation" | "ChoreographyTask" | "SubChoreography" | "CallChoreography";
6
6
  type BpmnEdgeType = "sequenceFlow" | "messageFlow" | "association" | "dataAssociation" | "conversationLink";
7
7
  type EventTrigger = "none" | "message" | "timer" | "escalation" | "conditional" | "error" | "cancel" | "compensation" | "signal" | "link" | "terminate" | "multiple" | "parallelMultiple";
8
+ type BpmnTimerKind = "date" | "duration" | "cycle";
9
+ interface BpmnTimerDefinition {
10
+ kind: BpmnTimerKind;
11
+ value: string;
12
+ }
13
+ interface BpmnMessageDefinition {
14
+ id: string;
15
+ name: string;
16
+ }
17
+ interface BpmnSignalDefinition {
18
+ id: string;
19
+ name: string;
20
+ }
21
+ interface BpmnErrorDefinition {
22
+ id: string;
23
+ name: string;
24
+ errorCode?: string;
25
+ }
26
+ interface BpmnEscalationDefinition {
27
+ id: string;
28
+ name: string;
29
+ escalationCode?: string;
30
+ }
31
+ interface BpmnProcessVariable {
32
+ id: string;
33
+ name: string;
34
+ type: "string" | "integer" | "boolean" | "date" | "object" | "array";
35
+ defaultValue?: string;
36
+ description?: string;
37
+ }
38
+ interface BpmnDefinitionsSet {
39
+ messages?: BpmnMessageDefinition[];
40
+ signals?: BpmnSignalDefinition[];
41
+ errors?: BpmnErrorDefinition[];
42
+ escalations?: BpmnEscalationDefinition[];
43
+ variables?: BpmnProcessVariable[];
44
+ }
45
+ interface BpmnEventDefinition extends Record<string, unknown> {
46
+ type: EventTrigger;
47
+ timer?: BpmnTimerDefinition;
48
+ messageRef?: string;
49
+ signalRef?: string;
50
+ errorRef?: string;
51
+ escalationRef?: string;
52
+ conditionExpression?: string;
53
+ linkName?: string;
54
+ }
8
55
  type TaskMarker = "loop" | "parallelMultiple" | "sequentialMultiple" | "compensation";
9
56
  type SubProcessVariant = "embedded" | "event" | "transaction" | "adhoc";
10
57
  interface BpmnElementMeta {
@@ -59,10 +106,23 @@ interface BpmnNodeData extends Record<string, unknown> {
59
106
  };
60
107
  /** Event trigger symbol rendered inside the event circle. */
61
108
  trigger?: EventTrigger;
109
+ /** Unified event definition payload used for BPMN 2.0 serialization and UI. */
110
+ eventDefinition?: BpmnEventDefinition;
62
111
  /** True for non-interrupting boundary events / event sub-process starts. */
63
112
  isNonInterrupting?: boolean;
64
113
  /** BoundaryEvent only: BPMN element id this boundary event is attached to. */
65
114
  attachedToRef?: string;
115
+ /** Compatibility alias used by older Aranza editors. */
116
+ cancelActivity?: boolean;
117
+ /** Legacy flat event fields kept during migration to eventDefinition. */
118
+ timer?: BpmnTimerDefinition;
119
+ timerExpression?: BpmnTimerDefinition;
120
+ messageRef?: string;
121
+ signalRef?: string;
122
+ errorRef?: string;
123
+ escalationRef?: string;
124
+ conditionExpression?: string;
125
+ linkName?: string;
66
126
  /** Raw BPMN documentation text. */
67
127
  documentation?: string;
68
128
  /** Task instance markers shown at the bottom of the task box. */
@@ -85,6 +145,8 @@ interface BpmnNodeData extends Record<string, unknown> {
85
145
  * (renders three parallel lines at the bottom, per BPMN 2.0 §10.3.1).
86
146
  */
87
147
  isCollection?: boolean;
148
+ /** CallActivity: id of the referenced called element (process or global task). */
149
+ calledElement?: string;
88
150
  /** aranzaflows namespace extensions. */
89
151
  priority?: "critical" | "high" | "medium" | "low";
90
152
  owner?: string;
@@ -108,4 +170,4 @@ interface BpmnEdgeData extends Record<string, unknown> {
108
170
  }>;
109
171
  }
110
172
 
111
- export type { BpmnCategory as B, EventTrigger as E, SubProcessVariant as S, TaskMarker as T, BpmnEdgeData as a, BpmnEdgeType as b, BpmnElementMeta as c, BpmnElementSize as d, BpmnElementType as e, BpmnEventSemantics as f, BpmnHandlePolicy as g, BpmnNodeData as h, BpmnOrientation as i };
173
+ export type { BpmnCategory as B, EventTrigger as E, SubProcessVariant as S, TaskMarker as T, BpmnDefinitionsSet as a, BpmnEdgeData as b, BpmnEdgeType as c, BpmnElementMeta as d, BpmnElementSize as e, BpmnElementType as f, BpmnErrorDefinition as g, BpmnEscalationDefinition as h, BpmnEventDefinition as i, BpmnEventSemantics as j, BpmnHandlePolicy as k, BpmnMessageDefinition as l, BpmnNodeData as m, BpmnOrientation as n, BpmnProcessVariable as o, BpmnSignalDefinition as p, BpmnTimerDefinition as q, BpmnTimerKind as r };
@@ -1,5 +1,5 @@
1
1
  import { Node, Edge } from '@xyflow/react';
2
- import { h as BpmnNodeData, a as BpmnEdgeData } from './types-DznxZxpV.js';
2
+ import { m as BpmnNodeData, b as BpmnEdgeData, a as BpmnDefinitionsSet } from './types-BPqNeIU-.js';
3
3
 
4
4
  type BpmnRFNode = Node<BpmnNodeData>;
5
5
  type BpmnRFEdge = Edge<BpmnEdgeData>;
@@ -7,6 +7,13 @@ interface BpmnImportResult {
7
7
  nodes: BpmnRFNode[];
8
8
  edges: BpmnRFEdge[];
9
9
  warnings: string[];
10
+ process?: BpmnProcessModel;
11
+ }
12
+ interface BpmnProcessModel {
13
+ processId?: string;
14
+ executable?: boolean;
15
+ documentation?: string;
16
+ definitions?: BpmnDefinitionsSet;
10
17
  }
11
18
  interface BpmnExportOptions {
12
19
  /** Diagram name written into the XML. */
@@ -15,6 +22,8 @@ interface BpmnExportOptions {
15
22
  id?: string;
16
23
  /** Pretty-print the XML output. Defaults to true. */
17
24
  format?: boolean;
25
+ /** Optional process-level metadata and global definitions. */
26
+ process?: BpmnProcessModel;
18
27
  }
19
28
 
20
- export type { BpmnExportOptions as B, BpmnImportResult as a, BpmnRFEdge as b, BpmnRFNode as c };
29
+ export type { BpmnExportOptions as B, BpmnImportResult as a, BpmnProcessModel as b, BpmnRFEdge as c, BpmnRFNode as d };
@@ -1,5 +1,5 @@
1
1
  import { Node, Edge } from '@xyflow/react';
2
- import { h as BpmnNodeData, a as BpmnEdgeData } from './types-DznxZxpV.cjs';
2
+ import { m as BpmnNodeData, b as BpmnEdgeData, a as BpmnDefinitionsSet } from './types-BPqNeIU-.cjs';
3
3
 
4
4
  type BpmnRFNode = Node<BpmnNodeData>;
5
5
  type BpmnRFEdge = Edge<BpmnEdgeData>;
@@ -7,6 +7,13 @@ interface BpmnImportResult {
7
7
  nodes: BpmnRFNode[];
8
8
  edges: BpmnRFEdge[];
9
9
  warnings: string[];
10
+ process?: BpmnProcessModel;
11
+ }
12
+ interface BpmnProcessModel {
13
+ processId?: string;
14
+ executable?: boolean;
15
+ documentation?: string;
16
+ definitions?: BpmnDefinitionsSet;
10
17
  }
11
18
  interface BpmnExportOptions {
12
19
  /** Diagram name written into the XML. */
@@ -15,6 +22,8 @@ interface BpmnExportOptions {
15
22
  id?: string;
16
23
  /** Pretty-print the XML output. Defaults to true. */
17
24
  format?: boolean;
25
+ /** Optional process-level metadata and global definitions. */
26
+ process?: BpmnProcessModel;
18
27
  }
19
28
 
20
- export type { BpmnExportOptions as B, BpmnImportResult as a, BpmnRFEdge as b, BpmnRFNode as c };
29
+ export type { BpmnExportOptions as B, BpmnImportResult as a, BpmnProcessModel as b, BpmnRFEdge as c, BpmnRFNode as d };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/elements/catalog.ts","../../src/elements/guards.ts","../../src/validation/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { BpmnElementType, BpmnElementMeta, BpmnElementSize } from \"./types\";\n\nexport const BPMN_ELEMENT_CATALOG: Record<BpmnElementType, BpmnElementMeta> = {\n // ─── Events ──────────────────────────────────────────────────────────────────\n StartEvent: {\n label: \"Start Event\",\n icon: \"Circle\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"source\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"start\",\n canBeStart: true, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 1,\n },\n EndEvent: {\n label: \"End Event\",\n icon: \"CircleDot\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"target\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"end\",\n canBeStart: false, canBeEnd: true,\n maxOutgoing: 0,\n },\n IntermediateCatchEvent: {\n label: \"Intermediate Catch Event\",\n icon: \"Clock3\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"intermediateCatch\",\n canBeStart: false, canBeEnd: false,\n },\n IntermediateThrowEvent: {\n label: \"Intermediate Throw Event\",\n icon: \"Send\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"intermediateThrow\",\n canBeStart: false, canBeEnd: false,\n },\n BoundaryEvent: {\n label: \"Boundary Event\",\n icon: \"AlarmClock\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"source\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"boundary\",\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0,\n },\n\n // ─── Tasks ───────────────────────────────────────────────────────────────────\n Task: {\n label: \"Task\",\n icon: \"CheckSquare\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n UserTask: {\n label: \"User Task\",\n icon: \"UserRound\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ServiceTask: {\n label: \"Service Task\",\n icon: \"Cog\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ScriptTask: {\n label: \"Script Task\",\n icon: \"FileCode\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ManualTask: {\n label: \"Manual Task\",\n icon: \"Hand\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n BusinessRuleTask: {\n label: \"Business Rule Task\",\n icon: \"Table2\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ReceiveTask: {\n label: \"Receive Task\",\n icon: \"Inbox\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n SendTask: {\n label: \"Send Task\",\n icon: \"Send\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n CallActivity: {\n label: \"Call Activity\",\n icon: \"ExternalLink\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n\n // ─── Gateways ────────────────────────────────────────────────────────────────\n ExclusiveGateway: {\n label: \"Exclusive Gateway\",\n icon: \"X\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n InclusiveGateway: {\n label: \"Inclusive Gateway\",\n icon: \"Circle\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n ParallelGateway: {\n label: \"Parallel Gateway\",\n icon: \"Plus\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n EventBasedGateway: {\n label: \"Event-Based Gateway\",\n icon: \"Radio\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 1,\n },\n ComplexGateway: {\n label: \"Complex Gateway\",\n icon: \"Asterisk\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n\n // ─── Containers ───────────────────────────────────────────────────────────────\n SubProcess: {\n label: \"Sub-Process\",\n icon: \"PlusSquare\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: true,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n Transaction: {\n label: \"Transaction\",\n icon: \"Receipt\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: true,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n EventSubProcess: {\n label: \"Event Sub-Process\",\n icon: \"CircleDotDashed\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n AdHocSubProcess: {\n label: \"Ad-Hoc Sub-Process\",\n icon: \"Waves\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: true,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n Pool: {\n label: \"Pool\",\n icon: \"Rows3\",\n category: \"container\",\n defaultWidth: 600, defaultHeight: 200,\n handlePolicy: \"none\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n Lane: {\n label: \"Lane\",\n icon: \"PanelTop\",\n category: \"container\",\n defaultWidth: 600, defaultHeight: 120,\n handlePolicy: \"none\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n\n // ─── Artifacts ────────────────────────────────────────────────────────────────\n Annotation: {\n label: \"Text Annotation\",\n icon: \"StickyNote\",\n category: \"artifact\",\n defaultWidth: 100, defaultHeight: 60,\n handlePolicy: \"none\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n Group: {\n label: \"Group\",\n icon: \"Group\",\n category: \"artifact\",\n defaultWidth: 300, defaultHeight: 200,\n handlePolicy: \"none\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n\n // ─── Data (BPMN 2.0 §10.3) ───────────────────────────────────────────────────\n DataObject: {\n label: \"Data Object\",\n icon: \"File\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n DataObjectReference: {\n label: \"Data Object Reference\",\n icon: \"FileSymlink\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n DataInput: {\n label: \"Data Input\",\n icon: \"FileInput\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0,\n },\n DataOutput: {\n label: \"Data Output\",\n icon: \"FileOutput\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxOutgoing: 0,\n },\n DataStore: {\n label: \"Data Store\",\n icon: \"Database\",\n category: \"data\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n DataStoreReference: {\n label: \"Data Store Reference\",\n icon: \"DatabaseZap\",\n category: \"data\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n\n // ─── Conversation (BPMN 2.0 §12) ─────────────────────────────────────────────\n Conversation: {\n label: \"Conversation\",\n icon: \"MessageCircle\",\n category: \"conversation\",\n defaultWidth: 60, defaultHeight: 52,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n SubConversation: {\n label: \"Sub-Conversation\",\n icon: \"MessagesSquare\",\n category: \"conversation\",\n defaultWidth: 60, defaultHeight: 52,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: true, acceptsBoundaryEvents: false,\n supportsCollapse: true,\n canBeStart: false, canBeEnd: false,\n },\n CallConversation: {\n label: \"Call Conversation\",\n icon: \"PhoneCall\",\n category: \"conversation\",\n defaultWidth: 60, defaultHeight: 52,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n\n // ─── Choreography (BPMN 2.0 §11) ─────────────────────────────────────────────\n ChoreographyTask: {\n label: \"Choreography Task\",\n icon: \"ArrowLeftRight\",\n category: \"choreography\",\n defaultWidth: 120, defaultHeight: 80,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n SubChoreography: {\n label: \"Sub-Choreography\",\n icon: \"BoxSelect\",\n category: \"choreography\",\n defaultWidth: 120, defaultHeight: 80,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n supportsCollapse: true,\n canBeStart: false, canBeEnd: false,\n },\n CallChoreography: {\n label: \"Call Choreography\",\n icon: \"Phone\",\n category: \"choreography\",\n defaultWidth: 120, defaultHeight: 80,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n};\n\nexport function getElementMeta(type: BpmnElementType): BpmnElementMeta {\n return BPMN_ELEMENT_CATALOG[type];\n}\n\nexport const BPMN_RESIZABLE_ELEMENT_TYPES = [\n \"Task\",\n \"UserTask\",\n \"ServiceTask\",\n \"ScriptTask\",\n \"ManualTask\",\n \"BusinessRuleTask\",\n \"ReceiveTask\",\n \"SendTask\",\n \"CallActivity\",\n \"SubProcess\",\n \"Transaction\",\n \"EventSubProcess\",\n \"AdHocSubProcess\",\n \"Pool\",\n \"Lane\",\n \"Annotation\",\n \"Group\",\n \"SubConversation\",\n \"ChoreographyTask\",\n \"SubChoreography\",\n \"CallChoreography\",\n] satisfies BpmnElementType[];\n\nconst BPMN_MIN_SIZE_OVERRIDES: Partial<\n Record<BpmnElementType, Pick<BpmnElementSize, \"minWidth\" | \"minHeight\">>\n> = {\n Task: { minWidth: 80, minHeight: 48 },\n UserTask: { minWidth: 80, minHeight: 48 },\n ServiceTask: { minWidth: 80, minHeight: 48 },\n ScriptTask: { minWidth: 80, minHeight: 48 },\n ManualTask: { minWidth: 80, minHeight: 48 },\n BusinessRuleTask: { minWidth: 80, minHeight: 48 },\n ReceiveTask: { minWidth: 80, minHeight: 48 },\n SendTask: { minWidth: 80, minHeight: 48 },\n CallActivity: { minWidth: 80, minHeight: 48 },\n SubProcess: { minWidth: 160, minHeight: 100 },\n Transaction: { minWidth: 160, minHeight: 100 },\n EventSubProcess: { minWidth: 160, minHeight: 100 },\n AdHocSubProcess: { minWidth: 160, minHeight: 100 },\n Pool: { minWidth: 240, minHeight: 120 },\n Lane: { minWidth: 240, minHeight: 80 },\n Annotation: { minWidth: 80, minHeight: 40 },\n Group: { minWidth: 120, minHeight: 80 },\n SubConversation: { minWidth: 60, minHeight: 52 },\n ChoreographyTask: { minWidth: 100, minHeight: 70 },\n SubChoreography: { minWidth: 100, minHeight: 70 },\n CallChoreography: { minWidth: 100, minHeight: 70 },\n};\n\nconst resizableTypes = new Set<BpmnElementType>(BPMN_RESIZABLE_ELEMENT_TYPES);\n\nexport function isBpmnElementResizable(type: BpmnElementType): boolean {\n return resizableTypes.has(type);\n}\n\nexport function getBpmnElementSize(type: BpmnElementType): BpmnElementSize {\n const meta = getElementMeta(type);\n const min = BPMN_MIN_SIZE_OVERRIDES[type];\n return {\n width: meta.defaultWidth,\n height: meta.defaultHeight,\n minWidth: meta.minWidth ?? min?.minWidth ?? meta.defaultWidth,\n minHeight: meta.minHeight ?? min?.minHeight ?? meta.defaultHeight,\n resizable: meta.resizable ?? isBpmnElementResizable(type),\n };\n}\n","import { BPMN_ELEMENT_CATALOG } from \"./catalog\";\nimport type { BpmnElementType } from \"./types\";\n\nconst TASK_TYPES = new Set<BpmnElementType>([\n \"Task\", \"UserTask\", \"ServiceTask\", \"ScriptTask\",\n \"ManualTask\", \"BusinessRuleTask\", \"ReceiveTask\", \"SendTask\", \"CallActivity\",\n]);\n\nconst GATEWAY_TYPES = new Set<BpmnElementType>([\n \"ExclusiveGateway\", \"InclusiveGateway\", \"ParallelGateway\",\n \"EventBasedGateway\", \"ComplexGateway\",\n]);\n\nconst EVENT_TYPES = new Set<BpmnElementType>([\n \"StartEvent\", \"EndEvent\", \"IntermediateCatchEvent\",\n \"IntermediateThrowEvent\", \"BoundaryEvent\",\n]);\n\nconst DATA_TYPES = new Set<BpmnElementType>([\n \"DataObject\", \"DataObjectReference\", \"DataInput\", \"DataOutput\",\n \"DataStore\", \"DataStoreReference\",\n]);\n\nconst CONVERSATION_TYPES = new Set<BpmnElementType>([\n \"Conversation\", \"SubConversation\", \"CallConversation\",\n]);\n\nconst CHOREOGRAPHY_TYPES = new Set<BpmnElementType>([\n \"ChoreographyTask\", \"SubChoreography\", \"CallChoreography\",\n]);\n\nexport function isTaskType(type: BpmnElementType): boolean {\n return TASK_TYPES.has(type);\n}\n\nexport function isGatewayType(type: BpmnElementType): boolean {\n return GATEWAY_TYPES.has(type);\n}\n\nexport function isEventType(type: BpmnElementType): boolean {\n return EVENT_TYPES.has(type);\n}\n\nexport function isDataType(type: BpmnElementType): boolean {\n return DATA_TYPES.has(type);\n}\n\nexport function isConversationType(type: BpmnElementType): boolean {\n return CONVERSATION_TYPES.has(type);\n}\n\nexport function isChoreographyType(type: BpmnElementType): boolean {\n return CHOREOGRAPHY_TYPES.has(type);\n}\n\nexport function isContainerType(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].isContainer;\n}\n\nexport function acceptsBoundaryEvents(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].acceptsBoundaryEvents;\n}\n\nexport function getHandlePolicy(type: BpmnElementType) {\n return BPMN_ELEMENT_CATALOG[type].handlePolicy;\n}\n\nexport function getOrientation(type: BpmnElementType) {\n return BPMN_ELEMENT_CATALOG[type].orientation;\n}\n\nexport function supportsCollapse(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].supportsCollapse ?? false;\n}\n\nexport function supportsMarkers(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].supportsMarkers ?? false;\n}\n","import { BPMN_ELEMENT_CATALOG } from \"../elements/catalog\";\nimport {\n isDataType,\n isEventType,\n isGatewayType,\n} from \"../elements/guards\";\nimport type { BpmnElementType } from \"../elements/types\";\nimport type { BpmnRFEdge, BpmnRFNode } from \"../xml/types\";\n\nexport type BpmnValidationSeverity = \"error\" | \"warning\" | \"info\";\n\nexport interface BpmnValidationIssue {\n id: string;\n severity: BpmnValidationSeverity;\n code: string;\n message: string;\n elementId?: string;\n relatedElementIds?: string[];\n}\n\nexport interface BpmnValidationResult {\n valid: boolean;\n issues: BpmnValidationIssue[];\n}\n\nexport interface BpmnValidationOptions {\n requireStartEvent?: boolean;\n requireEndEvent?: boolean;\n strictNames?: boolean;\n}\n\nfunction isFlowNode(type: BpmnElementType): boolean {\n return (\n isEventType(type) ||\n isGatewayType(type) ||\n type.includes(\"Task\") ||\n type === \"CallActivity\" ||\n type === \"SubProcess\" ||\n type === \"Transaction\" ||\n type === \"EventSubProcess\" ||\n type === \"AdHocSubProcess\" ||\n type === \"ChoreographyTask\" ||\n type === \"SubChoreography\" ||\n type === \"CallChoreography\"\n );\n}\n\nfunction isProcessNode(type: BpmnElementType): boolean {\n return isFlowNode(type) && type !== \"BoundaryEvent\";\n}\n\nfunction isSubProcess(type: BpmnElementType): boolean {\n return (\n type === \"SubProcess\" ||\n type === \"Transaction\" ||\n type === \"EventSubProcess\" ||\n type === \"AdHocSubProcess\"\n );\n}\n\nfunction isCatchTarget(type: BpmnElementType): boolean {\n return type === \"IntermediateCatchEvent\" || type === \"ReceiveTask\";\n}\n\nfunction poolAncestor(\n node: BpmnRFNode | undefined,\n nodeById: Map<string, BpmnRFNode>,\n): string | undefined {\n let current = node;\n const visited = new Set<string>();\n while (current?.parentId && !visited.has(current.id)) {\n visited.add(current.id);\n const parent = nodeById.get(current.parentId);\n if (parent?.data.elementType === \"Pool\") return parent.id;\n current = parent;\n }\n return undefined;\n}\n\nfunction countSequenceEdges(edges: BpmnRFEdge[], nodeId: string, direction: \"in\" | \"out\"): number {\n return edges.filter((edge) => {\n if (edge.data?.edgeType !== \"sequenceFlow\") return false;\n return direction === \"in\" ? edge.target === nodeId : edge.source === nodeId;\n }).length;\n}\n\nfunction sequenceEdges(edges: BpmnRFEdge[]): BpmnRFEdge[] {\n return edges.filter((edge) => (edge.data?.edgeType ?? edge.type) === \"sequenceFlow\");\n}\n\nfunction sequenceOut(edges: BpmnRFEdge[], nodeId: string): BpmnRFEdge[] {\n return sequenceEdges(edges).filter((edge) => edge.source === nodeId);\n}\n\nfunction sequenceIn(edges: BpmnRFEdge[], nodeId: string): BpmnRFEdge[] {\n return sequenceEdges(edges).filter((edge) => edge.target === nodeId);\n}\n\nfunction issue(\n code: string,\n severity: BpmnValidationSeverity,\n message: string,\n elementId?: string,\n relatedElementIds?: string[],\n): BpmnValidationIssue {\n return {\n id: `${code}:${elementId ?? relatedElementIds?.join(\",\") ?? \"diagram\"}`,\n code,\n severity,\n message,\n ...(elementId ? { elementId } : {}),\n ...(relatedElementIds ? { relatedElementIds } : {}),\n };\n}\n\nexport function validateBpmnDiagram(\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n options: BpmnValidationOptions = {},\n): BpmnValidationResult {\n const opts = {\n requireStartEvent: true,\n requireEndEvent: true,\n strictNames: false,\n ...options,\n };\n const issues: BpmnValidationIssue[] = [];\n const nodeById = new Map(nodes.map((node) => [node.id, node]));\n const seqEdges = sequenceEdges(edges);\n\n const processNodes = nodes.filter((node) => isProcessNode(node.data.elementType));\n if (opts.requireStartEvent && !processNodes.some((node) => node.data.elementType === \"StartEvent\")) {\n issues.push(issue(\"bpmn/start-event-required\", \"error\", \"The diagram must contain at least one start event.\"));\n }\n if (opts.requireEndEvent && !processNodes.some((node) => node.data.elementType === \"EndEvent\")) {\n issues.push(issue(\"bpmn/end-event-required\", \"error\", \"The diagram must contain at least one end event.\"));\n }\n\n for (const edge of edges) {\n const edgeType = edge.data?.edgeType ?? edge.type;\n const source = nodeById.get(edge.source);\n const target = nodeById.get(edge.target);\n\n if (!source || !target) {\n issues.push(issue(\n \"bpmn/no-orphan-edges\",\n \"error\",\n `Edge \"${edge.id}\" references a missing ${!source ? \"source\" : \"target\"} node.`,\n edge.id,\n [edge.source, edge.target],\n ));\n continue;\n }\n\n if (edge.source === edge.target) {\n issues.push(issue(\"bpmn/no-self-loop\", \"error\", \"BPMN edges cannot connect an element to itself.\", edge.id, [edge.source]));\n }\n\n if (edgeType === \"sequenceFlow\") {\n if (!isFlowNode(source.data.elementType) || !isFlowNode(target.data.elementType) || isDataType(source.data.elementType) || isDataType(target.data.elementType)) {\n issues.push(issue(\"bpmn/sequence-flow-valid-endpoints\", \"error\", \"Sequence flows must connect BPMN flow nodes.\", edge.id, [source.id, target.id]));\n }\n const sourcePool = poolAncestor(source, nodeById);\n const targetPool = poolAncestor(target, nodeById);\n if (sourcePool && targetPool && sourcePool !== targetPool) {\n issues.push(issue(\"bpmn/sequence-flow-no-cross-pool\", \"error\", \"Sequence flows cannot cross pools. Use message flow between participants.\", edge.id, [source.id, target.id]));\n }\n }\n\n if (edgeType === \"messageFlow\") {\n const sourcePool = poolAncestor(source, nodeById);\n const targetPool = poolAncestor(target, nodeById);\n if (!sourcePool || !targetPool || sourcePool === targetPool) {\n issues.push(issue(\"bpmn/message-flow-valid-endpoints\", \"error\", \"Message flows must connect flow nodes in different pools.\", edge.id, [source.id, target.id]));\n }\n if (!isFlowNode(source.data.elementType) || !isFlowNode(target.data.elementType)) {\n issues.push(issue(\"bpmn/message-flow-valid-endpoints\", \"error\", \"Message flows must connect BPMN flow nodes, not containers.\", edge.id, [source.id, target.id]));\n }\n }\n\n if (edgeType === \"dataAssociation\") {\n const hasDataEndpoint = isDataType(source.data.elementType) || isDataType(target.data.elementType);\n const hasFlowEndpoint = isFlowNode(source.data.elementType) || isFlowNode(target.data.elementType);\n if (!hasDataEndpoint || !hasFlowEndpoint) {\n issues.push(issue(\"bpmn/data-association-valid-endpoints\", \"error\", \"Data associations must connect data elements with flow nodes.\", edge.id, [source.id, target.id]));\n }\n }\n }\n\n const duplicateSequenceKeys = new Set<string>();\n const reportedDuplicateKeys = new Set<string>();\n for (const edge of seqEdges) {\n const key = `${edge.source}->${edge.target}`;\n if (duplicateSequenceKeys.has(key) && !reportedDuplicateKeys.has(key)) {\n reportedDuplicateKeys.add(key);\n issues.push(issue(\"bpmn/no-duplicate-sequence-flow\", \"error\", \"Only one sequence flow is allowed between the same source and target.\", edge.id, [edge.source, edge.target]));\n }\n duplicateSequenceKeys.add(key);\n }\n\n for (const node of nodes) {\n const type = node.data.elementType;\n const incoming = countSequenceEdges(edges, node.id, \"in\");\n const outgoing = countSequenceEdges(edges, node.id, \"out\");\n const meta = BPMN_ELEMENT_CATALOG[type];\n\n if (type === \"StartEvent\" && incoming > 0) {\n issues.push(issue(\"bpmn/start-event-no-incoming\", \"error\", \"Start events cannot have incoming sequence flows.\", node.id));\n }\n if (type === \"EndEvent\") {\n if (outgoing > 0) issues.push(issue(\"bpmn/no-outgoing-from-end-event\", \"error\", \"End events cannot have outgoing sequence flows.\", node.id));\n if (incoming === 0) issues.push(issue(\"bpmn/end-event-has-incoming\", \"error\", \"End events should have at least one incoming sequence flow.\", node.id));\n }\n if ((type === \"IntermediateCatchEvent\" || type === \"IntermediateThrowEvent\") && (incoming === 0 || outgoing === 0)) {\n issues.push(issue(\"bpmn/intermediate-event-both-flows\", \"error\", \"Intermediate events should have both incoming and outgoing sequence flows.\", node.id));\n }\n if (type === \"BoundaryEvent\") {\n const hostId = node.data.attachedToRef ?? node.parentId;\n const host = hostId ? nodeById.get(hostId) : undefined;\n if (!host || !BPMN_ELEMENT_CATALOG[host.data.elementType]?.acceptsBoundaryEvents) {\n issues.push(issue(\"bpmn/boundary-event-attached\", \"error\", \"Boundary events must be attached to an activity or subprocess.\", node.id, hostId ? [hostId] : undefined));\n }\n if (sequenceIn(edges, node.id).length > 0) {\n issues.push(issue(\"bpmn/boundary-no-incoming\", \"error\", \"Boundary events cannot have incoming sequence flows.\", node.id));\n }\n if (sequenceOut(edges, node.id).length === 0) {\n issues.push(issue(\"bpmn/boundary-has-outgoing\", \"warning\", \"Boundary events should define an outgoing exception path.\", node.id));\n }\n }\n if (isGatewayType(type)) {\n if (incoming === 0) issues.push(issue(\"bpmn/gateway-has-incoming\", \"error\", \"Gateways should have at least one incoming sequence flow.\", node.id));\n if (outgoing === 0) issues.push(issue(\"bpmn/gateway-has-outgoing\", \"error\", \"Gateways should have at least one outgoing sequence flow.\", node.id));\n }\n if (type === \"ExclusiveGateway\" || type === \"InclusiveGateway\" || type === \"ComplexGateway\") {\n const outgoingEdges = sequenceOut(edges, node.id);\n const defaults = outgoingEdges.filter((edge) => edge.data?.isDefault);\n if (defaults.length > 1) {\n issues.push(issue(\"bpmn/gateway-single-default\", \"error\", \"Gateways can have at most one default sequence flow.\", node.id, defaults.map((edge) => edge.id)));\n }\n if (outgoingEdges.length >= 2) {\n for (const edge of outgoingEdges) {\n if (!edge.data?.isDefault && !edge.data?.conditionExpression) {\n issues.push(issue(\"bpmn/gateway-condition\", \"error\", \"Conditional gateway branches should have a condition or be marked as default.\", edge.id, [node.id, edge.target]));\n }\n }\n }\n }\n if (type === \"EventBasedGateway\") {\n const outgoingEdges = edges.filter((edge) => edge.data?.edgeType === \"sequenceFlow\" && edge.source === node.id);\n if (outgoingEdges.length < 2) {\n issues.push(issue(\"bpmn/event-based-gateway-min-outgoing\", \"error\", \"Event-based gateways should have at least two outgoing sequence flows.\", node.id));\n }\n for (const edge of outgoingEdges) {\n const target = nodeById.get(edge.target);\n if (target && !isCatchTarget(target.data.elementType)) {\n issues.push(issue(\"bpmn/event-based-gateway-valid-targets\", \"error\", \"Event-based gateways must target catch events or receive tasks.\", edge.id, [node.id, target.id]));\n }\n }\n }\n if (meta.maxIncoming !== undefined && incoming > meta.maxIncoming) {\n issues.push(issue(\"bpmn/max-incoming\", \"error\", `${type} cannot have more than ${meta.maxIncoming} incoming sequence flow(s).`, node.id));\n }\n if (meta.maxOutgoing !== undefined && outgoing > meta.maxOutgoing) {\n issues.push(issue(\"bpmn/max-outgoing\", \"error\", `${type} cannot have more than ${meta.maxOutgoing} outgoing sequence flow(s).`, node.id));\n }\n if (opts.strictNames && (type.includes(\"Task\") || isGatewayType(type)) && !node.data.label) {\n issues.push(issue(\"bpmn/name-required\", \"warning\", `${type} should have a label.`, node.id));\n }\n if (isSubProcess(type)) {\n const childNodes = nodes.filter((child) => child.parentId === node.id);\n if (childNodes.length > 0) {\n if (!childNodes.some((child) => child.data.elementType === \"StartEvent\")) {\n issues.push(issue(\"bpmn/subprocess-has-start-end\", \"error\", \"Expanded subprocesses should contain a start event.\", node.id));\n }\n if (!childNodes.some((child) => child.data.elementType === \"EndEvent\")) {\n issues.push(issue(\"bpmn/subprocess-has-start-end\", \"error\", \"Expanded subprocesses should contain an end event.\", node.id));\n }\n }\n if (type === \"EventSubProcess\") {\n const starts = childNodes.filter((child) => child.data.elementType === \"StartEvent\");\n for (const start of starts) {\n if (!start.data.trigger || start.data.trigger === \"none\") {\n issues.push(issue(\"bpmn/event-subprocess-triggered-start\", \"error\", \"Event subprocess start events must define an event trigger.\", start.id, [node.id]));\n }\n }\n }\n }\n if (type === \"Lane\") {\n const parent = node.parentId ? nodeById.get(node.parentId) : undefined;\n if (parent?.data.elementType !== \"Pool\") {\n issues.push(issue(\"bpmn/lane-parent-pool\", \"error\", \"Lanes must be contained by a pool.\", node.id));\n }\n }\n }\n\n return {\n valid: issues.every((item) => item.severity !== \"error\"),\n issues,\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/elements/catalog.ts","../../src/elements/guards.ts","../../src/validation/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { BpmnElementType, BpmnElementMeta, BpmnElementSize } from \"./types\";\n\nexport const BPMN_ELEMENT_CATALOG: Record<BpmnElementType, BpmnElementMeta> = {\n // ─── Events ──────────────────────────────────────────────────────────────────\n StartEvent: {\n label: \"Start Event\",\n icon: \"Circle\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"source\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"start\",\n canBeStart: true, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 1,\n },\n EndEvent: {\n label: \"End Event\",\n icon: \"CircleDot\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"target\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"end\",\n canBeStart: false, canBeEnd: true,\n maxOutgoing: 0,\n },\n IntermediateCatchEvent: {\n label: \"Intermediate Catch Event\",\n icon: \"Clock3\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"intermediateCatch\",\n canBeStart: false, canBeEnd: false,\n },\n IntermediateThrowEvent: {\n label: \"Intermediate Throw Event\",\n icon: \"Send\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"intermediateThrow\",\n canBeStart: false, canBeEnd: false,\n },\n BoundaryEvent: {\n label: \"Boundary Event\",\n icon: \"AlarmClock\",\n category: \"event\",\n defaultWidth: 36, defaultHeight: 36,\n handlePolicy: \"source\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n eventSemantics: \"boundary\",\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0,\n },\n\n // ─── Tasks ───────────────────────────────────────────────────────────────────\n Task: {\n label: \"Task\",\n icon: \"CheckSquare\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n UserTask: {\n label: \"User Task\",\n icon: \"UserRound\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ServiceTask: {\n label: \"Service Task\",\n icon: \"Cog\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ScriptTask: {\n label: \"Script Task\",\n icon: \"FileCode\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ManualTask: {\n label: \"Manual Task\",\n icon: \"Hand\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n BusinessRuleTask: {\n label: \"Business Rule Task\",\n icon: \"Table2\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n ReceiveTask: {\n label: \"Receive Task\",\n icon: \"Inbox\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n SendTask: {\n label: \"Send Task\",\n icon: \"Send\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n CallActivity: {\n label: \"Call Activity\",\n icon: \"ExternalLink\",\n category: \"task\",\n defaultWidth: 120, defaultHeight: 60,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: true,\n supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n\n // ─── Gateways ────────────────────────────────────────────────────────────────\n ExclusiveGateway: {\n label: \"Exclusive Gateway\",\n icon: \"X\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n InclusiveGateway: {\n label: \"Inclusive Gateway\",\n icon: \"Circle\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n ParallelGateway: {\n label: \"Parallel Gateway\",\n icon: \"Plus\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n EventBasedGateway: {\n label: \"Event-Based Gateway\",\n icon: \"Radio\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 1,\n },\n ComplexGateway: {\n label: \"Complex Gateway\",\n icon: \"Asterisk\",\n category: \"gateway\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n\n // ─── Containers ───────────────────────────────────────────────────────────────\n SubProcess: {\n label: \"Sub-Process\",\n icon: \"PlusSquare\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: true,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n Transaction: {\n label: \"Transaction\",\n icon: \"Receipt\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: true,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n EventSubProcess: {\n label: \"Event Sub-Process\",\n icon: \"CircleDotDashed\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n AdHocSubProcess: {\n label: \"Ad-Hoc Sub-Process\",\n icon: \"Waves\",\n category: \"container\",\n defaultWidth: 350, defaultHeight: 200,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: true,\n supportsCollapse: true, supportsMarkers: true,\n canBeStart: false, canBeEnd: false,\n },\n Pool: {\n label: \"Pool\",\n icon: \"Rows3\",\n category: \"container\",\n defaultWidth: 600, defaultHeight: 200,\n handlePolicy: \"none\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n Lane: {\n label: \"Lane\",\n icon: \"PanelTop\",\n category: \"container\",\n defaultWidth: 600, defaultHeight: 120,\n handlePolicy: \"none\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n\n // ─── Artifacts ────────────────────────────────────────────────────────────────\n Annotation: {\n label: \"Text Annotation\",\n icon: \"StickyNote\",\n category: \"artifact\",\n defaultWidth: 100, defaultHeight: 60,\n handlePolicy: \"none\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n Group: {\n label: \"Group\",\n icon: \"Group\",\n category: \"artifact\",\n defaultWidth: 300, defaultHeight: 200,\n handlePolicy: \"none\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n\n // ─── Data (BPMN 2.0 §10.3) ───────────────────────────────────────────────────\n DataObject: {\n label: \"Data Object\",\n icon: \"File\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n DataObjectReference: {\n label: \"Data Object Reference\",\n icon: \"FileSymlink\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n DataInput: {\n label: \"Data Input\",\n icon: \"FileInput\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0,\n },\n DataOutput: {\n label: \"Data Output\",\n icon: \"FileOutput\",\n category: \"data\",\n defaultWidth: 36, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxOutgoing: 0,\n },\n DataStore: {\n label: \"Data Store\",\n icon: \"Database\",\n category: \"data\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n DataStoreReference: {\n label: \"Data Store Reference\",\n icon: \"DatabaseZap\",\n category: \"data\",\n defaultWidth: 50, defaultHeight: 50,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n maxIncoming: 0, maxOutgoing: 0,\n },\n\n // ─── Conversation (BPMN 2.0 §12) ─────────────────────────────────────────────\n Conversation: {\n label: \"Conversation\",\n icon: \"MessageCircle\",\n category: \"conversation\",\n defaultWidth: 60, defaultHeight: 52,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n SubConversation: {\n label: \"Sub-Conversation\",\n icon: \"MessagesSquare\",\n category: \"conversation\",\n defaultWidth: 60, defaultHeight: 52,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: true, acceptsBoundaryEvents: false,\n supportsCollapse: true,\n canBeStart: false, canBeEnd: false,\n },\n CallConversation: {\n label: \"Call Conversation\",\n icon: \"PhoneCall\",\n category: \"conversation\",\n defaultWidth: 60, defaultHeight: 52,\n handlePolicy: \"all\", orientation: \"free\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n\n // ─── Choreography (BPMN 2.0 §11) ─────────────────────────────────────────────\n ChoreographyTask: {\n label: \"Choreography Task\",\n icon: \"ArrowLeftRight\",\n category: \"choreography\",\n defaultWidth: 120, defaultHeight: 80,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n SubChoreography: {\n label: \"Sub-Choreography\",\n icon: \"BoxSelect\",\n category: \"choreography\",\n defaultWidth: 120, defaultHeight: 80,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: true, acceptsBoundaryEvents: false,\n supportsCollapse: true,\n canBeStart: false, canBeEnd: false,\n },\n CallChoreography: {\n label: \"Call Choreography\",\n icon: \"Phone\",\n category: \"choreography\",\n defaultWidth: 120, defaultHeight: 80,\n handlePolicy: \"all\", orientation: \"horizontal\",\n isContainer: false, acceptsBoundaryEvents: false,\n canBeStart: false, canBeEnd: false,\n },\n};\n\nexport function getElementMeta(type: BpmnElementType): BpmnElementMeta {\n return BPMN_ELEMENT_CATALOG[type];\n}\n\nexport const BPMN_RESIZABLE_ELEMENT_TYPES = [\n \"Task\",\n \"UserTask\",\n \"ServiceTask\",\n \"ScriptTask\",\n \"ManualTask\",\n \"BusinessRuleTask\",\n \"ReceiveTask\",\n \"SendTask\",\n \"CallActivity\",\n \"SubProcess\",\n \"Transaction\",\n \"EventSubProcess\",\n \"AdHocSubProcess\",\n \"Pool\",\n \"Lane\",\n \"Annotation\",\n \"Group\",\n \"SubConversation\",\n \"ChoreographyTask\",\n \"SubChoreography\",\n \"CallChoreography\",\n] satisfies BpmnElementType[];\n\nconst BPMN_MIN_SIZE_OVERRIDES: Partial<\n Record<BpmnElementType, Pick<BpmnElementSize, \"minWidth\" | \"minHeight\">>\n> = {\n Task: { minWidth: 80, minHeight: 48 },\n UserTask: { minWidth: 80, minHeight: 48 },\n ServiceTask: { minWidth: 80, minHeight: 48 },\n ScriptTask: { minWidth: 80, minHeight: 48 },\n ManualTask: { minWidth: 80, minHeight: 48 },\n BusinessRuleTask: { minWidth: 80, minHeight: 48 },\n ReceiveTask: { minWidth: 80, minHeight: 48 },\n SendTask: { minWidth: 80, minHeight: 48 },\n CallActivity: { minWidth: 80, minHeight: 48 },\n SubProcess: { minWidth: 160, minHeight: 100 },\n Transaction: { minWidth: 160, minHeight: 100 },\n EventSubProcess: { minWidth: 160, minHeight: 100 },\n AdHocSubProcess: { minWidth: 160, minHeight: 100 },\n Pool: { minWidth: 240, minHeight: 120 },\n Lane: { minWidth: 240, minHeight: 80 },\n Annotation: { minWidth: 80, minHeight: 40 },\n Group: { minWidth: 120, minHeight: 80 },\n SubConversation: { minWidth: 60, minHeight: 52 },\n ChoreographyTask: { minWidth: 100, minHeight: 70 },\n SubChoreography: { minWidth: 100, minHeight: 70 },\n CallChoreography: { minWidth: 100, minHeight: 70 },\n};\n\nconst resizableTypes = new Set<BpmnElementType>(BPMN_RESIZABLE_ELEMENT_TYPES);\n\nexport function isBpmnElementResizable(type: BpmnElementType): boolean {\n return resizableTypes.has(type);\n}\n\nexport function getBpmnElementSize(type: BpmnElementType): BpmnElementSize {\n const meta = getElementMeta(type);\n const min = BPMN_MIN_SIZE_OVERRIDES[type];\n return {\n width: meta.defaultWidth,\n height: meta.defaultHeight,\n minWidth: meta.minWidth ?? min?.minWidth ?? meta.defaultWidth,\n minHeight: meta.minHeight ?? min?.minHeight ?? meta.defaultHeight,\n resizable: meta.resizable ?? isBpmnElementResizable(type),\n };\n}\n","import { BPMN_ELEMENT_CATALOG } from \"./catalog\";\nimport type { BpmnElementType } from \"./types\";\n\nconst TASK_TYPES = new Set<BpmnElementType>([\n \"Task\", \"UserTask\", \"ServiceTask\", \"ScriptTask\",\n \"ManualTask\", \"BusinessRuleTask\", \"ReceiveTask\", \"SendTask\", \"CallActivity\",\n]);\n\nconst GATEWAY_TYPES = new Set<BpmnElementType>([\n \"ExclusiveGateway\", \"InclusiveGateway\", \"ParallelGateway\",\n \"EventBasedGateway\", \"ComplexGateway\",\n]);\n\nconst EVENT_TYPES = new Set<BpmnElementType>([\n \"StartEvent\", \"EndEvent\", \"IntermediateCatchEvent\",\n \"IntermediateThrowEvent\", \"BoundaryEvent\",\n]);\n\nconst DATA_TYPES = new Set<BpmnElementType>([\n \"DataObject\", \"DataObjectReference\", \"DataInput\", \"DataOutput\",\n \"DataStore\", \"DataStoreReference\",\n]);\n\nconst CONVERSATION_TYPES = new Set<BpmnElementType>([\n \"Conversation\", \"SubConversation\", \"CallConversation\",\n]);\n\nconst CHOREOGRAPHY_TYPES = new Set<BpmnElementType>([\n \"ChoreographyTask\", \"SubChoreography\", \"CallChoreography\",\n]);\n\nexport function isTaskType(type: BpmnElementType): boolean {\n return TASK_TYPES.has(type);\n}\n\nexport function isGatewayType(type: BpmnElementType): boolean {\n return GATEWAY_TYPES.has(type);\n}\n\nexport function isEventType(type: BpmnElementType): boolean {\n return EVENT_TYPES.has(type);\n}\n\nexport function isDataType(type: BpmnElementType): boolean {\n return DATA_TYPES.has(type);\n}\n\nexport function isConversationType(type: BpmnElementType): boolean {\n return CONVERSATION_TYPES.has(type);\n}\n\nexport function isChoreographyType(type: BpmnElementType): boolean {\n return CHOREOGRAPHY_TYPES.has(type);\n}\n\nexport function isContainerType(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].isContainer;\n}\n\nexport function acceptsBoundaryEvents(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].acceptsBoundaryEvents;\n}\n\nexport function getHandlePolicy(type: BpmnElementType) {\n return BPMN_ELEMENT_CATALOG[type].handlePolicy;\n}\n\nexport function getOrientation(type: BpmnElementType) {\n return BPMN_ELEMENT_CATALOG[type].orientation;\n}\n\nexport function supportsCollapse(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].supportsCollapse ?? false;\n}\n\nexport function supportsMarkers(type: BpmnElementType): boolean {\n return BPMN_ELEMENT_CATALOG[type].supportsMarkers ?? false;\n}\n","import { BPMN_ELEMENT_CATALOG } from \"../elements/catalog\";\nimport {\n isDataType,\n isEventType,\n isGatewayType,\n} from \"../elements/guards\";\nimport type { BpmnElementType } from \"../elements/types\";\nimport type { BpmnRFEdge, BpmnRFNode } from \"../xml/types\";\n\nexport type BpmnValidationSeverity = \"error\" | \"warning\" | \"info\";\n\nexport interface BpmnValidationIssue {\n id: string;\n severity: BpmnValidationSeverity;\n code: string;\n message: string;\n elementId?: string;\n relatedElementIds?: string[];\n}\n\nexport interface BpmnValidationResult {\n valid: boolean;\n issues: BpmnValidationIssue[];\n}\n\nexport interface BpmnValidationOptions {\n requireStartEvent?: boolean;\n requireEndEvent?: boolean;\n strictNames?: boolean;\n}\n\nfunction isFlowNode(type: BpmnElementType): boolean {\n return (\n isEventType(type) ||\n isGatewayType(type) ||\n type.includes(\"Task\") ||\n type === \"CallActivity\" ||\n type === \"SubProcess\" ||\n type === \"Transaction\" ||\n type === \"EventSubProcess\" ||\n type === \"AdHocSubProcess\" ||\n type === \"ChoreographyTask\" ||\n type === \"SubChoreography\" ||\n type === \"CallChoreography\"\n );\n}\n\nfunction isProcessNode(type: BpmnElementType): boolean {\n return isFlowNode(type) && type !== \"BoundaryEvent\";\n}\n\nfunction isSubProcess(type: BpmnElementType): boolean {\n return (\n type === \"SubProcess\" ||\n type === \"Transaction\" ||\n type === \"EventSubProcess\" ||\n type === \"AdHocSubProcess\"\n );\n}\n\nfunction isCatchTarget(type: BpmnElementType): boolean {\n return type === \"IntermediateCatchEvent\" || type === \"ReceiveTask\";\n}\n\nfunction poolAncestor(\n node: BpmnRFNode | undefined,\n nodeById: Map<string, BpmnRFNode>,\n): string | undefined {\n let current = node;\n const visited = new Set<string>();\n while (current?.parentId && !visited.has(current.id)) {\n visited.add(current.id);\n const parent = nodeById.get(current.parentId);\n if (parent?.data.elementType === \"Pool\") return parent.id;\n current = parent;\n }\n return undefined;\n}\n\nfunction countSequenceEdges(edges: BpmnRFEdge[], nodeId: string, direction: \"in\" | \"out\"): number {\n return edges.filter((edge) => {\n if (edge.data?.edgeType !== \"sequenceFlow\") return false;\n return direction === \"in\" ? edge.target === nodeId : edge.source === nodeId;\n }).length;\n}\n\nfunction sequenceEdges(edges: BpmnRFEdge[]): BpmnRFEdge[] {\n return edges.filter((edge) => (edge.data?.edgeType ?? edge.type) === \"sequenceFlow\");\n}\n\nfunction sequenceOut(edges: BpmnRFEdge[], nodeId: string): BpmnRFEdge[] {\n return sequenceEdges(edges).filter((edge) => edge.source === nodeId);\n}\n\nfunction sequenceIn(edges: BpmnRFEdge[], nodeId: string): BpmnRFEdge[] {\n return sequenceEdges(edges).filter((edge) => edge.target === nodeId);\n}\n\nfunction issue(\n code: string,\n severity: BpmnValidationSeverity,\n message: string,\n elementId?: string,\n relatedElementIds?: string[],\n): BpmnValidationIssue {\n return {\n id: `${code}:${elementId ?? relatedElementIds?.join(\",\") ?? \"diagram\"}`,\n code,\n severity,\n message,\n ...(elementId ? { elementId } : {}),\n ...(relatedElementIds ? { relatedElementIds } : {}),\n };\n}\n\n/**\n * @deprecated Use `@aranzatech/flowslint` with `runBpmnLint` instead.\n * This function will be removed in v0.4.0.\n * Import it from the `/validation` subpath if you still need it temporarily.\n */\nexport function validateBpmnDiagram(\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n options: BpmnValidationOptions = {},\n): BpmnValidationResult {\n const opts = {\n requireStartEvent: true,\n requireEndEvent: true,\n strictNames: false,\n ...options,\n };\n const issues: BpmnValidationIssue[] = [];\n const nodeById = new Map(nodes.map((node) => [node.id, node]));\n const seqEdges = sequenceEdges(edges);\n\n const processNodes = nodes.filter((node) => isProcessNode(node.data.elementType));\n if (opts.requireStartEvent && !processNodes.some((node) => node.data.elementType === \"StartEvent\")) {\n issues.push(issue(\"bpmn/start-event-required\", \"error\", \"The diagram must contain at least one start event.\"));\n }\n if (opts.requireEndEvent && !processNodes.some((node) => node.data.elementType === \"EndEvent\")) {\n issues.push(issue(\"bpmn/end-event-required\", \"error\", \"The diagram must contain at least one end event.\"));\n }\n\n for (const edge of edges) {\n const edgeType = edge.data?.edgeType ?? edge.type;\n const source = nodeById.get(edge.source);\n const target = nodeById.get(edge.target);\n\n if (!source || !target) {\n issues.push(issue(\n \"bpmn/no-orphan-edges\",\n \"error\",\n `Edge \"${edge.id}\" references a missing ${!source ? \"source\" : \"target\"} node.`,\n edge.id,\n [edge.source, edge.target],\n ));\n continue;\n }\n\n if (edge.source === edge.target) {\n issues.push(issue(\"bpmn/no-self-loop\", \"error\", \"BPMN edges cannot connect an element to itself.\", edge.id, [edge.source]));\n }\n\n if (edgeType === \"sequenceFlow\") {\n if (!isFlowNode(source.data.elementType) || !isFlowNode(target.data.elementType) || isDataType(source.data.elementType) || isDataType(target.data.elementType)) {\n issues.push(issue(\"bpmn/sequence-flow-valid-endpoints\", \"error\", \"Sequence flows must connect BPMN flow nodes.\", edge.id, [source.id, target.id]));\n }\n const sourcePool = poolAncestor(source, nodeById);\n const targetPool = poolAncestor(target, nodeById);\n if (sourcePool && targetPool && sourcePool !== targetPool) {\n issues.push(issue(\"bpmn/sequence-flow-no-cross-pool\", \"error\", \"Sequence flows cannot cross pools. Use message flow between participants.\", edge.id, [source.id, target.id]));\n }\n }\n\n if (edgeType === \"messageFlow\") {\n const sourcePool = poolAncestor(source, nodeById);\n const targetPool = poolAncestor(target, nodeById);\n if (!sourcePool || !targetPool || sourcePool === targetPool) {\n issues.push(issue(\"bpmn/message-flow-valid-endpoints\", \"error\", \"Message flows must connect flow nodes in different pools.\", edge.id, [source.id, target.id]));\n }\n if (!isFlowNode(source.data.elementType) || !isFlowNode(target.data.elementType)) {\n issues.push(issue(\"bpmn/message-flow-valid-endpoints\", \"error\", \"Message flows must connect BPMN flow nodes, not containers.\", edge.id, [source.id, target.id]));\n }\n }\n\n if (edgeType === \"dataAssociation\") {\n const hasDataEndpoint = isDataType(source.data.elementType) || isDataType(target.data.elementType);\n const hasFlowEndpoint = isFlowNode(source.data.elementType) || isFlowNode(target.data.elementType);\n if (!hasDataEndpoint || !hasFlowEndpoint) {\n issues.push(issue(\"bpmn/data-association-valid-endpoints\", \"error\", \"Data associations must connect data elements with flow nodes.\", edge.id, [source.id, target.id]));\n }\n }\n }\n\n const duplicateSequenceKeys = new Set<string>();\n const reportedDuplicateKeys = new Set<string>();\n for (const edge of seqEdges) {\n const key = `${edge.source}->${edge.target}`;\n if (duplicateSequenceKeys.has(key) && !reportedDuplicateKeys.has(key)) {\n reportedDuplicateKeys.add(key);\n issues.push(issue(\"bpmn/no-duplicate-sequence-flow\", \"error\", \"Only one sequence flow is allowed between the same source and target.\", edge.id, [edge.source, edge.target]));\n }\n duplicateSequenceKeys.add(key);\n }\n\n for (const node of nodes) {\n const type = node.data.elementType;\n const incoming = countSequenceEdges(edges, node.id, \"in\");\n const outgoing = countSequenceEdges(edges, node.id, \"out\");\n const meta = BPMN_ELEMENT_CATALOG[type];\n\n if (type === \"StartEvent\" && incoming > 0) {\n issues.push(issue(\"bpmn/start-event-no-incoming\", \"error\", \"Start events cannot have incoming sequence flows.\", node.id));\n }\n if (type === \"EndEvent\") {\n if (outgoing > 0) issues.push(issue(\"bpmn/no-outgoing-from-end-event\", \"error\", \"End events cannot have outgoing sequence flows.\", node.id));\n if (incoming === 0) issues.push(issue(\"bpmn/end-event-has-incoming\", \"error\", \"End events should have at least one incoming sequence flow.\", node.id));\n }\n if ((type === \"IntermediateCatchEvent\" || type === \"IntermediateThrowEvent\") && (incoming === 0 || outgoing === 0)) {\n issues.push(issue(\"bpmn/intermediate-event-both-flows\", \"error\", \"Intermediate events should have both incoming and outgoing sequence flows.\", node.id));\n }\n if (type === \"BoundaryEvent\") {\n const hostId = node.data.attachedToRef ?? node.parentId;\n const host = hostId ? nodeById.get(hostId) : undefined;\n if (!host || !BPMN_ELEMENT_CATALOG[host.data.elementType]?.acceptsBoundaryEvents) {\n issues.push(issue(\"bpmn/boundary-event-attached\", \"error\", \"Boundary events must be attached to an activity or subprocess.\", node.id, hostId ? [hostId] : undefined));\n }\n if (sequenceIn(edges, node.id).length > 0) {\n issues.push(issue(\"bpmn/boundary-no-incoming\", \"error\", \"Boundary events cannot have incoming sequence flows.\", node.id));\n }\n if (sequenceOut(edges, node.id).length === 0) {\n issues.push(issue(\"bpmn/boundary-has-outgoing\", \"warning\", \"Boundary events should define an outgoing exception path.\", node.id));\n }\n }\n if (isGatewayType(type)) {\n if (incoming === 0) issues.push(issue(\"bpmn/gateway-has-incoming\", \"error\", \"Gateways should have at least one incoming sequence flow.\", node.id));\n if (outgoing === 0) issues.push(issue(\"bpmn/gateway-has-outgoing\", \"error\", \"Gateways should have at least one outgoing sequence flow.\", node.id));\n }\n if (type === \"ExclusiveGateway\" || type === \"InclusiveGateway\" || type === \"ComplexGateway\") {\n const outgoingEdges = sequenceOut(edges, node.id);\n const defaults = outgoingEdges.filter((edge) => edge.data?.isDefault);\n if (defaults.length > 1) {\n issues.push(issue(\"bpmn/gateway-single-default\", \"error\", \"Gateways can have at most one default sequence flow.\", node.id, defaults.map((edge) => edge.id)));\n }\n if (outgoingEdges.length >= 2) {\n for (const edge of outgoingEdges) {\n if (!edge.data?.isDefault && !edge.data?.conditionExpression) {\n issues.push(issue(\"bpmn/gateway-condition\", \"error\", \"Conditional gateway branches should have a condition or be marked as default.\", edge.id, [node.id, edge.target]));\n }\n }\n }\n }\n if (type === \"EventBasedGateway\") {\n const outgoingEdges = edges.filter((edge) => edge.data?.edgeType === \"sequenceFlow\" && edge.source === node.id);\n if (outgoingEdges.length < 2) {\n issues.push(issue(\"bpmn/event-based-gateway-min-outgoing\", \"error\", \"Event-based gateways should have at least two outgoing sequence flows.\", node.id));\n }\n for (const edge of outgoingEdges) {\n const target = nodeById.get(edge.target);\n if (target && !isCatchTarget(target.data.elementType)) {\n issues.push(issue(\"bpmn/event-based-gateway-valid-targets\", \"error\", \"Event-based gateways must target catch events or receive tasks.\", edge.id, [node.id, target.id]));\n }\n }\n }\n if (meta.maxIncoming !== undefined && incoming > meta.maxIncoming) {\n issues.push(issue(\"bpmn/max-incoming\", \"error\", `${type} cannot have more than ${meta.maxIncoming} incoming sequence flow(s).`, node.id));\n }\n if (meta.maxOutgoing !== undefined && outgoing > meta.maxOutgoing) {\n issues.push(issue(\"bpmn/max-outgoing\", \"error\", `${type} cannot have more than ${meta.maxOutgoing} outgoing sequence flow(s).`, node.id));\n }\n if (opts.strictNames && (type.includes(\"Task\") || isGatewayType(type)) && !node.data.label) {\n issues.push(issue(\"bpmn/name-required\", \"warning\", `${type} should have a label.`, node.id));\n }\n if (isSubProcess(type)) {\n const childNodes = nodes.filter((child) => child.parentId === node.id);\n if (childNodes.length > 0) {\n if (!childNodes.some((child) => child.data.elementType === \"StartEvent\")) {\n issues.push(issue(\"bpmn/subprocess-has-start-end\", \"error\", \"Expanded subprocesses should contain a start event.\", node.id));\n }\n if (!childNodes.some((child) => child.data.elementType === \"EndEvent\")) {\n issues.push(issue(\"bpmn/subprocess-has-start-end\", \"error\", \"Expanded subprocesses should contain an end event.\", node.id));\n }\n }\n if (type === \"EventSubProcess\") {\n const starts = childNodes.filter((child) => child.data.elementType === \"StartEvent\");\n for (const start of starts) {\n if (!start.data.trigger || start.data.trigger === \"none\") {\n issues.push(issue(\"bpmn/event-subprocess-triggered-start\", \"error\", \"Event subprocess start events must define an event trigger.\", start.id, [node.id]));\n }\n }\n }\n }\n if (type === \"Lane\") {\n const parent = node.parentId ? nodeById.get(node.parentId) : undefined;\n if (parent?.data.elementType !== \"Pool\") {\n issues.push(issue(\"bpmn/lane-parent-pool\", \"error\", \"Lanes must be contained by a pool.\", node.id));\n }\n }\n }\n\n return {\n valid: issues.every((item) => item.severity !== \"error\"),\n issues,\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { c as BpmnRFNode, b as BpmnRFEdge } from '../types-vVi5T7qj.cjs';
1
+ import { d as BpmnRFNode, c as BpmnRFEdge } from '../types-exnfq24-.cjs';
2
2
  import '@xyflow/react';
3
- import '../types-DznxZxpV.cjs';
3
+ import '../types-BPqNeIU-.cjs';
4
4
 
5
5
  type BpmnValidationSeverity = "error" | "warning" | "info";
6
6
  interface BpmnValidationIssue {
@@ -20,6 +20,11 @@ interface BpmnValidationOptions {
20
20
  requireEndEvent?: boolean;
21
21
  strictNames?: boolean;
22
22
  }
23
+ /**
24
+ * @deprecated Use `@aranzatech/flowslint` with `runBpmnLint` instead.
25
+ * This function will be removed in v0.4.0.
26
+ * Import it from the `/validation` subpath if you still need it temporarily.
27
+ */
23
28
  declare function validateBpmnDiagram(nodes: BpmnRFNode[], edges: BpmnRFEdge[], options?: BpmnValidationOptions): BpmnValidationResult;
24
29
 
25
30
  export { type BpmnValidationIssue, type BpmnValidationOptions, type BpmnValidationResult, type BpmnValidationSeverity, validateBpmnDiagram };