bpmn-js 18.1.2 → 18.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -100,6 +100,9 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
100
100
 
101
101
  var rules = this._rules;
102
102
 
103
+ var sameTypeEventOptions = [],
104
+ eventDefinitionType;
105
+
103
106
  var filteredReplaceOptions = [];
104
107
 
105
108
  if (isArray(target) || !rules.allowed('shape.replace', { element: target })) {
@@ -116,10 +119,26 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
116
119
  return this._createEntries(target, replaceOptions.DATA_STORE_REFERENCE);
117
120
  }
118
121
 
122
+ // typed start, intermediate, and end events
123
+ if (is(businessObject, 'bpmn:Event') && !is(businessObject, 'bpmn:BoundaryEvent')) {
124
+ eventDefinitionType = businessObject.get('eventDefinitions')[0]?.$type;
125
+
126
+ sameTypeEventOptions = replaceOptions.TYPED_EVENT[eventDefinitionType] || [];
127
+
128
+ if (!isEventSubProcess(businessObject.$parent) && is(businessObject.$parent, 'bpmn:SubProcess')) {
129
+ sameTypeEventOptions = filter(sameTypeEventOptions, function(option) {
130
+ return option.target.type !== 'bpmn:StartEvent';
131
+ });
132
+ }
133
+ }
134
+
119
135
  // start events outside sub processes
120
136
  if (is(businessObject, 'bpmn:StartEvent') && !is(businessObject.$parent, 'bpmn:SubProcess')) {
121
137
 
122
- filteredReplaceOptions = filter(replaceOptions.START_EVENT, differentType);
138
+ filteredReplaceOptions = filter(
139
+ replaceOptions.START_EVENT.concat(sameTypeEventOptions),
140
+ differentType
141
+ );
123
142
 
124
143
  return this._createEntries(target, filteredReplaceOptions);
125
144
  }
@@ -136,18 +155,20 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
136
155
 
137
156
  // start events inside event sub processes
138
157
  if (is(businessObject, 'bpmn:StartEvent') && isEventSubProcess(businessObject.$parent)) {
139
- filteredReplaceOptions = filter(replaceOptions.EVENT_SUB_PROCESS_START_EVENT, function(replaceOption) {
158
+ filteredReplaceOptions = filter(
159
+ replaceOptions.EVENT_SUB_PROCESS_START_EVENT.concat(sameTypeEventOptions), function(replaceOption) {
140
160
 
141
- var target = replaceOption.target;
161
+ var target = replaceOption.target;
142
162
 
143
- var isInterrupting = target.isInterrupting !== false;
163
+ var isInterrupting = target.isInterrupting !== false;
144
164
 
145
- var isInterruptingEqual = businessObject.isInterrupting === isInterrupting;
165
+ var isInterruptingEqual = businessObject.isInterrupting === isInterrupting;
146
166
 
147
- // filters elements which types and event definition are equal but have have different interrupting types
148
- return differentType(replaceOption) || !differentType(replaceOption) && !isInterruptingEqual;
167
+ // filters elements which types and event definition are equal but have have different interrupting types
168
+ return differentType(replaceOption) || !differentType(replaceOption) && !isInterruptingEqual;
149
169
 
150
- });
170
+ }
171
+ );
151
172
 
152
173
  return this._createEntries(target, filteredReplaceOptions);
153
174
  }
@@ -155,7 +176,10 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
155
176
  // start events inside sub processes
156
177
  if (is(businessObject, 'bpmn:StartEvent') && !isEventSubProcess(businessObject.$parent)
157
178
  && is(businessObject.$parent, 'bpmn:SubProcess')) {
158
- filteredReplaceOptions = filter(replaceOptions.START_EVENT_SUB_PROCESS, differentType);
179
+ filteredReplaceOptions = filter(
180
+ replaceOptions.START_EVENT_SUB_PROCESS.concat(sameTypeEventOptions),
181
+ differentType
182
+ );
159
183
 
160
184
  return this._createEntries(target, filteredReplaceOptions);
161
185
  }
@@ -163,7 +187,7 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
163
187
  // end events
164
188
  if (is(businessObject, 'bpmn:EndEvent')) {
165
189
 
166
- filteredReplaceOptions = filter(replaceOptions.END_EVENT, function(replaceOption) {
190
+ filteredReplaceOptions = filter(replaceOptions.END_EVENT.concat(sameTypeEventOptions), function(replaceOption) {
167
191
  var target = replaceOption.target;
168
192
 
169
193
  // hide cancel end events outside transactions
@@ -202,7 +226,10 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
202
226
  if (is(businessObject, 'bpmn:IntermediateCatchEvent') ||
203
227
  is(businessObject, 'bpmn:IntermediateThrowEvent')) {
204
228
 
205
- filteredReplaceOptions = filter(replaceOptions.INTERMEDIATE_EVENT, differentType);
229
+ filteredReplaceOptions = filter(
230
+ replaceOptions.INTERMEDIATE_EVENT.concat(sameTypeEventOptions),
231
+ differentType
232
+ );
206
233
 
207
234
  return this._createEntries(target, filteredReplaceOptions);
208
235
  }
@@ -231,6 +258,14 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
231
258
  return this._createEntries(target, filteredReplaceOptions);
232
259
  }
233
260
 
261
+ // expanded ad hoc sub processes
262
+ if (is(businessObject, 'bpmn:AdHocSubProcess') && isExpanded(target)) {
263
+
264
+ filteredReplaceOptions = filter(replaceOptions.AD_HOC_SUBPROCESS_EXPANDED, differentType);
265
+
266
+ return this._createEntries(target, filteredReplaceOptions);
267
+ }
268
+
234
269
  // expanded sub processes
235
270
  if (is(businessObject, 'bpmn:SubProcess') && isExpanded(target)) {
236
271
 
@@ -239,18 +274,16 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
239
274
  return this._createEntries(target, filteredReplaceOptions);
240
275
  }
241
276
 
242
- // collapsed ad hoc sub processes
243
- if (is(businessObject, 'bpmn:AdHocSubProcess') && !isExpanded(target)) {
277
+ // collapsed sub process or collapsed ad hoc sub process
278
+ if (is(businessObject, 'bpmn:SubProcess') && !isExpanded(target)) {
244
279
 
245
280
  filteredReplaceOptions = filter(replaceOptions.TASK, function(replaceOption) {
246
281
 
247
- var target = replaceOption.target;
248
-
249
- var isTargetSubProcess = target.type === 'bpmn:SubProcess';
282
+ var isTargetSameType = replaceOption.target.type === target.type;
283
+ var isTargetExpanded = replaceOption.target.isExpanded === true;
250
284
 
251
- var isTargetExpanded = target.isExpanded === true;
252
-
253
- return isDifferentType(target, target) && (!isTargetSubProcess || isTargetExpanded);
285
+ // Collapsed subprocess cannot be replaced with itself or expanded subprocess of different type.
286
+ return isTargetSameType === isTargetExpanded;
254
287
  });
255
288
 
256
289
  return this._createEntries(target, filteredReplaceOptions);
@@ -265,13 +298,6 @@ ReplaceMenuProvider.prototype.getPopupMenuEntries = function(target) {
265
298
  if (is(businessObject, 'bpmn:FlowNode')) {
266
299
  filteredReplaceOptions = filter(replaceOptions.TASK, differentType);
267
300
 
268
- // collapsed sub process cannot be replaced with itself
269
- if (is(businessObject, 'bpmn:SubProcess') && !isExpanded(target)) {
270
- filteredReplaceOptions = filter(filteredReplaceOptions, function(replaceOption) {
271
- return replaceOption.label !== 'Sub-process (collapsed)';
272
- });
273
- }
274
-
275
301
  return this._createEntries(target, filteredReplaceOptions);
276
302
  }
277
303
 
@@ -308,15 +334,6 @@ ReplaceMenuProvider.prototype.getPopupMenuHeaderEntries = function(target) {
308
334
  };
309
335
  }
310
336
 
311
- if (is(target, 'bpmn:SubProcess') &&
312
- !is(target, 'bpmn:Transaction') &&
313
- !isEventSubProcess(target)) {
314
- headerEntries = {
315
- ...headerEntries,
316
- ...this._getAdHocHeaderEntries(target)
317
- };
318
- }
319
-
320
337
  if (canBeNonInterrupting(target)) {
321
338
  headerEntries = {
322
339
  ...headerEntries,
@@ -614,44 +631,6 @@ ReplaceMenuProvider.prototype._getParticipantMultiplicityHeaderEntries = functio
614
631
  };
615
632
  };
616
633
 
617
- /**
618
- * Get popup menu header entries for the ad-hoc property of the given BPMN element.
619
- *
620
- * @param {PopupMenuTarget} element
621
- *
622
- * @return {PopupMenuHeaderEntries}
623
- */
624
- ReplaceMenuProvider.prototype._getAdHocHeaderEntries = function(element) {
625
- var translate = this._translate;
626
- var businessObject = getBusinessObject(element);
627
-
628
- var isAdHoc = is(businessObject, 'bpmn:AdHocSubProcess');
629
-
630
- var replaceElement = this._bpmnReplace.replaceElement;
631
-
632
- return {
633
- 'toggle-adhoc': {
634
- className: 'bpmn-icon-ad-hoc-marker',
635
- title: translate('Ad-hoc'),
636
- active: isAdHoc,
637
- action: function(event, entry) {
638
- if (isAdHoc) {
639
- return replaceElement(element, { type: 'bpmn:SubProcess' }, {
640
- autoResize: false,
641
- layoutConnection: false
642
- });
643
- } else {
644
- return replaceElement(element, { type: 'bpmn:AdHocSubProcess' }, {
645
- autoResize: false,
646
- layoutConnection: false
647
- });
648
- }
649
- }
650
- }
651
- };
652
- };
653
-
654
-
655
634
  ReplaceMenuProvider.prototype._getNonInterruptingHeaderEntries = function(element) {
656
635
  const translate = this._translate;
657
636
  const businessObject = getBusinessObject(element);
@@ -145,7 +145,7 @@ export default function BpmnReplace(
145
145
  var type = targetElement.type,
146
146
  oldBusinessObject = element.businessObject;
147
147
 
148
- if (isSubProcess(oldBusinessObject) && type === 'bpmn:SubProcess') {
148
+ if (isSubProcess(oldBusinessObject) && (type === 'bpmn:SubProcess' || type === 'bpmn:AdHocSubProcess')) {
149
149
  if (shouldToggleCollapsed(element, targetElement)) {
150
150
 
151
151
  // expanding or collapsing process
@@ -22,6 +22,10 @@ export const GATEWAY: ReplaceOption[];
22
22
  * @type {ReplaceOption[]}
23
23
  */
24
24
  export const SUBPROCESS_EXPANDED: ReplaceOption[];
25
+ /**
26
+ * @type {ReplaceOption[]}
27
+ */
28
+ export const AD_HOC_SUBPROCESS_EXPANDED: ReplaceOption[];
25
29
  /**
26
30
  * @type {ReplaceOption[]}
27
31
  */
@@ -58,6 +62,12 @@ export const SEQUENCE_FLOW: ReplaceOption[];
58
62
  * @type {ReplaceOption[]}
59
63
  */
60
64
  export const PARTICIPANT: ReplaceOption[];
65
+ /**
66
+ * @type {{ [key: string]: ReplaceOption[]}}
67
+ */
68
+ export const TYPED_EVENT: {
69
+ [key: string]: ReplaceOption[];
70
+ };
61
71
  export type LabelGetter = () => string;
62
72
  export type ReplaceOption = {
63
73
  label: string | LabelGetter;
@@ -427,6 +427,15 @@ export var SUBPROCESS_EXPANDED = [
427
427
  isExpanded: true
428
428
  }
429
429
  },
430
+ {
431
+ label: 'Ad-hoc sub-process',
432
+ actionName: 'replace-with-ad-hoc-subprocess',
433
+ className: 'bpmn-icon-subprocess-expanded',
434
+ target: {
435
+ type: 'bpmn:AdHocSubProcess',
436
+ isExpanded: true
437
+ }
438
+ },
430
439
  {
431
440
  label: 'Sub-process (collapsed)',
432
441
  actionName: 'replace-with-collapsed-subprocess',
@@ -438,6 +447,49 @@ export var SUBPROCESS_EXPANDED = [
438
447
  }
439
448
  ];
440
449
 
450
+ /**
451
+ * @type {ReplaceOption[]}
452
+ */
453
+ export var AD_HOC_SUBPROCESS_EXPANDED = [
454
+ {
455
+ label: 'Sub-process',
456
+ actionName: 'replace-with-subprocess',
457
+ className: 'bpmn-icon-subprocess-expanded',
458
+ target: {
459
+ type: 'bpmn:SubProcess',
460
+ isExpanded: true
461
+ }
462
+ },
463
+ {
464
+ label: 'Transaction',
465
+ actionName: 'replace-with-transaction',
466
+ className: 'bpmn-icon-transaction',
467
+ target: {
468
+ type: 'bpmn:Transaction',
469
+ isExpanded: true
470
+ }
471
+ },
472
+ {
473
+ label: 'Event sub-process',
474
+ actionName: 'replace-with-event-subprocess',
475
+ className: 'bpmn-icon-event-subprocess-expanded',
476
+ target: {
477
+ type: 'bpmn:SubProcess',
478
+ triggeredByEvent: true,
479
+ isExpanded: true
480
+ }
481
+ },
482
+ {
483
+ label: 'Ad-hoc sub-process (collapsed)',
484
+ actionName: 'replace-with-collapsed-ad-hoc-subprocess',
485
+ className: 'bpmn-icon-subprocess-collapsed',
486
+ target: {
487
+ type: 'bpmn:AdHocSubProcess',
488
+ isExpanded: false
489
+ }
490
+ }
491
+ ];
492
+
441
493
  /**
442
494
  * @type {ReplaceOption[]}
443
495
  */
@@ -460,6 +512,15 @@ export var TRANSACTION = [
460
512
  isExpanded: true
461
513
  }
462
514
  },
515
+ {
516
+ label: 'Ad-hoc sub-process',
517
+ actionName: 'replace-with-ad-hoc-subprocess',
518
+ className: 'bpmn-icon-subprocess-expanded',
519
+ target: {
520
+ type: 'bpmn:AdHocSubProcess',
521
+ isExpanded: true
522
+ }
523
+ },
463
524
  {
464
525
  label: 'Event sub-process',
465
526
  actionName: 'replace-with-event-subprocess',
@@ -570,6 +631,24 @@ export var TASK = [
570
631
  type: 'bpmn:SubProcess',
571
632
  isExpanded: true
572
633
  }
634
+ },
635
+ {
636
+ label: 'Ad-hoc sub-process (collapsed)',
637
+ actionName: 'replace-with-collapsed-ad-hoc-subprocess',
638
+ className: 'bpmn-icon-subprocess-collapsed',
639
+ target: {
640
+ type: 'bpmn:AdHocSubProcess',
641
+ isExpanded: false
642
+ }
643
+ },
644
+ {
645
+ label: 'Ad-hoc sub-process (expanded)',
646
+ actionName: 'replace-with-ad-hoc-subprocess',
647
+ className: 'bpmn-icon-subprocess-expanded',
648
+ target: {
649
+ type: 'bpmn:AdHocSubProcess',
650
+ isExpanded: true
651
+ }
573
652
  }
574
653
  ];
575
654
 
@@ -917,3 +996,203 @@ export var PARTICIPANT = [
917
996
  }
918
997
  }
919
998
  ];
999
+
1000
+ /**
1001
+ * @type {{ [key: string]: ReplaceOption[]}}
1002
+ */
1003
+ export var TYPED_EVENT = {
1004
+ 'bpmn:MessageEventDefinition': [
1005
+ {
1006
+ label: 'Message start event',
1007
+ actionName: 'replace-with-message-start',
1008
+ className: 'bpmn-icon-start-event-message',
1009
+ target: {
1010
+ type: 'bpmn:StartEvent',
1011
+ eventDefinitionType: 'bpmn:MessageEventDefinition'
1012
+ }
1013
+ },
1014
+ {
1015
+ label: 'Message intermediate catch event',
1016
+ actionName: 'replace-with-message-intermediate-catch',
1017
+ className: 'bpmn-icon-intermediate-event-catch-message',
1018
+ target: {
1019
+ type: 'bpmn:IntermediateCatchEvent',
1020
+ eventDefinitionType: 'bpmn:MessageEventDefinition'
1021
+ }
1022
+ },
1023
+ {
1024
+ label: 'Message intermediate throw event',
1025
+ actionName: 'replace-with-message-intermediate-throw',
1026
+ className: 'bpmn-icon-intermediate-event-throw-message',
1027
+ target: {
1028
+ type: 'bpmn:IntermediateThrowEvent',
1029
+ eventDefinitionType: 'bpmn:MessageEventDefinition'
1030
+ }
1031
+ },
1032
+ {
1033
+ label: 'Message end event',
1034
+ actionName: 'replace-with-message-end',
1035
+ className: 'bpmn-icon-end-event-message',
1036
+ target: {
1037
+ type: 'bpmn:EndEvent',
1038
+ eventDefinitionType: 'bpmn:MessageEventDefinition'
1039
+ }
1040
+ }
1041
+ ],
1042
+ 'bpmn:TimerEventDefinition': [
1043
+ {
1044
+ label: 'Timer start event',
1045
+ actionName: 'replace-with-timer-start',
1046
+ className: 'bpmn-icon-start-event-timer',
1047
+ target: {
1048
+ type: 'bpmn:StartEvent',
1049
+ eventDefinitionType: 'bpmn:TimerEventDefinition'
1050
+ }
1051
+ },
1052
+ {
1053
+ label: 'Timer intermediate catch event',
1054
+ actionName: 'replace-with-timer-intermediate-catch',
1055
+ className: 'bpmn-icon-intermediate-event-catch-timer',
1056
+ target: {
1057
+ type: 'bpmn:IntermediateCatchEvent',
1058
+ eventDefinitionType: 'bpmn:TimerEventDefinition'
1059
+ }
1060
+ }
1061
+ ],
1062
+ 'bpmn:ConditionalEventDefinition': [
1063
+ {
1064
+ label: 'Conditional start event',
1065
+ actionName: 'replace-with-conditional-start',
1066
+ className: 'bpmn-icon-start-event-condition',
1067
+ target: {
1068
+ type: 'bpmn:StartEvent',
1069
+ eventDefinitionType: 'bpmn:ConditionalEventDefinition'
1070
+ }
1071
+ },
1072
+ {
1073
+ label: 'Conditional intermediate catch event',
1074
+ actionName: 'replace-with-conditional-intermediate-catch',
1075
+ className: 'bpmn-icon-intermediate-event-catch-condition',
1076
+ target: {
1077
+ type: 'bpmn:IntermediateCatchEvent',
1078
+ eventDefinitionType: 'bpmn:ConditionalEventDefinition'
1079
+ }
1080
+ }
1081
+ ],
1082
+ 'bpmn:SignalEventDefinition': [
1083
+ {
1084
+ label: 'Signal start event',
1085
+ actionName: 'replace-with-signal-start',
1086
+ className: 'bpmn-icon-start-event-signal',
1087
+ target: {
1088
+ type: 'bpmn:StartEvent',
1089
+ eventDefinitionType: 'bpmn:SignalEventDefinition'
1090
+ }
1091
+ },
1092
+ {
1093
+ label: 'Signal intermediate catch event',
1094
+ actionName: 'replace-with-signal-intermediate-catch',
1095
+ className: 'bpmn-icon-intermediate-event-catch-signal',
1096
+ target: {
1097
+ type: 'bpmn:IntermediateCatchEvent',
1098
+ eventDefinitionType: 'bpmn:SignalEventDefinition'
1099
+ }
1100
+ },
1101
+ {
1102
+ label: 'Signal intermediate throw event',
1103
+ actionName: 'replace-with-signal-intermediate-throw',
1104
+ className: 'bpmn-icon-intermediate-event-throw-signal',
1105
+ target: {
1106
+ type: 'bpmn:IntermediateThrowEvent',
1107
+ eventDefinitionType: 'bpmn:SignalEventDefinition'
1108
+ }
1109
+ },
1110
+ {
1111
+ label: 'Signal end event',
1112
+ actionName: 'replace-with-signal-end',
1113
+ className: 'bpmn-icon-end-event-signal',
1114
+ target: {
1115
+ type: 'bpmn:EndEvent',
1116
+ eventDefinitionType: 'bpmn:SignalEventDefinition'
1117
+ }
1118
+ }
1119
+ ],
1120
+ 'bpmn:ErrorEventDefinition': [
1121
+ {
1122
+ label: 'Error start event',
1123
+ actionName: 'replace-with-error-start',
1124
+ className: 'bpmn-icon-start-event-error',
1125
+ target: {
1126
+ type: 'bpmn:StartEvent',
1127
+ eventDefinitionType: 'bpmn:ErrorEventDefinition'
1128
+ }
1129
+ },
1130
+ {
1131
+ label: 'Error end event',
1132
+ actionName: 'replace-with-error-end',
1133
+ className: 'bpmn-icon-end-event-error',
1134
+ target: {
1135
+ type: 'bpmn:EndEvent',
1136
+ eventDefinitionType: 'bpmn:ErrorEventDefinition'
1137
+ }
1138
+ }
1139
+ ],
1140
+ 'bpmn:EscalationEventDefinition': [
1141
+ {
1142
+ label: 'Escalation start event',
1143
+ actionName: 'replace-with-escalation-start',
1144
+ className: 'bpmn-icon-start-event-escalation',
1145
+ target: {
1146
+ type: 'bpmn:StartEvent',
1147
+ eventDefinitionType: 'bpmn:EscalationEventDefinition'
1148
+ }
1149
+ },
1150
+ {
1151
+ label: 'Escalation intermediate throw event',
1152
+ actionName: 'replace-with-escalation-intermediate-throw',
1153
+ className: 'bpmn-icon-intermediate-event-throw-escalation',
1154
+ target: {
1155
+ type: 'bpmn:IntermediateThrowEvent',
1156
+ eventDefinitionType: 'bpmn:EscalationEventDefinition'
1157
+ }
1158
+ },
1159
+ {
1160
+ label: 'Escalation end event',
1161
+ actionName: 'replace-with-escalation-end',
1162
+ className: 'bpmn-icon-end-event-escalation',
1163
+ target: {
1164
+ type: 'bpmn:EndEvent',
1165
+ eventDefinitionType: 'bpmn:EscalationEventDefinition'
1166
+ }
1167
+ }
1168
+ ],
1169
+ 'bpmn:CompensateEventDefinition': [
1170
+ {
1171
+ label: 'Compensation start event',
1172
+ actionName: 'replace-with-compensation-start',
1173
+ className: 'bpmn-icon-start-event-compensation',
1174
+ target: {
1175
+ type: 'bpmn:StartEvent',
1176
+ eventDefinitionType: 'bpmn:CompensateEventDefinition'
1177
+ }
1178
+ },
1179
+ {
1180
+ label: 'Compensation intermediate throw event',
1181
+ actionName: 'replace-with-compensation-intermediate-throw',
1182
+ className: 'bpmn-icon-intermediate-event-throw-compensation',
1183
+ target: {
1184
+ type: 'bpmn:IntermediateThrowEvent',
1185
+ eventDefinitionType: 'bpmn:CompensateEventDefinition'
1186
+ }
1187
+ },
1188
+ {
1189
+ label: 'Compensation end event',
1190
+ actionName: 'replace-with-compensation-end',
1191
+ className: 'bpmn-icon-end-event-compensation',
1192
+ target: {
1193
+ type: 'bpmn:EndEvent',
1194
+ eventDefinitionType: 'bpmn:CompensateEventDefinition'
1195
+ }
1196
+ }
1197
+ ]
1198
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpmn-js",
3
- "version": "18.1.2",
3
+ "version": "18.3.0",
4
4
  "description": "A bpmn 2.0 toolkit and web modeler",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -98,7 +98,7 @@
98
98
  "mocha": "^10.7.3",
99
99
  "mocha-test-container-support": "0.2.0",
100
100
  "npm-run-all2": "^7.0.0",
101
- "puppeteer": "^23.6.1",
101
+ "puppeteer": "^24.0.0",
102
102
  "remark-cli": "^12.0.0",
103
103
  "remark-preset-bpmn-io": "^0.2.1",
104
104
  "rollup": "^4.0.0",