@camunda/task-testing 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +148 -61
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -386,8 +386,14 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
386
386
|
/** @type {TaskExecutionApi} */
|
|
387
387
|
this._api = api;
|
|
388
388
|
this._interval = null;
|
|
389
|
+
|
|
390
|
+
/** @type {TaskExecutionStatus} */
|
|
391
|
+
this._status = 'idle';
|
|
389
392
|
const eventBus = injector.get('eventBus');
|
|
390
393
|
eventBus.on(['selection.changed', 'commandStack.changed'], () => {
|
|
394
|
+
if (this._status !== 'idle') {
|
|
395
|
+
this.emit('taskExecution.interrupted');
|
|
396
|
+
}
|
|
391
397
|
this.cancelTaskExecution();
|
|
392
398
|
});
|
|
393
399
|
}
|
|
@@ -401,9 +407,12 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
401
407
|
* @returns {Promise<void>}
|
|
402
408
|
*/
|
|
403
409
|
async executeTask(elementId, variables) {
|
|
404
|
-
|
|
405
|
-
this.emit('taskExecution.status.changed', 'deploying');
|
|
410
|
+
this._changeStatus('deploying');
|
|
406
411
|
const deploymentResult = await this._api.deploy();
|
|
412
|
+
if (this._status === 'idle') {
|
|
413
|
+
// Execution was canceled in the meantime
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
407
416
|
if (!deploymentResult.success) {
|
|
408
417
|
this._emitError('Failed to deploy process definition', deploymentResult.error);
|
|
409
418
|
this.cancelTaskExecution();
|
|
@@ -415,8 +424,12 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
415
424
|
this.cancelTaskExecution();
|
|
416
425
|
return;
|
|
417
426
|
}
|
|
418
|
-
this.
|
|
427
|
+
this._changeStatus('starting-instance');
|
|
419
428
|
const startInstanceResult = await this._api.startInstance(processId, elementId, variables);
|
|
429
|
+
if (/** @type {TaskExecutionStatus} */this._status === 'idle') {
|
|
430
|
+
// Execution was canceled in the meantime
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
420
433
|
if (!startInstanceResult.success) {
|
|
421
434
|
this._emitError('Failed to start process instance', startInstanceResult.error);
|
|
422
435
|
this.cancelTaskExecution();
|
|
@@ -428,9 +441,14 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
428
441
|
this.cancelTaskExecution();
|
|
429
442
|
return;
|
|
430
443
|
}
|
|
431
|
-
this.
|
|
444
|
+
this._changeStatus('executing', processInstanceKey);
|
|
432
445
|
const intervalCallback = async () => {
|
|
433
446
|
const getProcessInstanceResult = await this._api.getProcessInstance(processInstanceKey);
|
|
447
|
+
if (this._status === 'idle') {
|
|
448
|
+
// Execution was canceled in the meantime
|
|
449
|
+
this.cancelTaskExecution();
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
434
452
|
if (!getProcessInstanceResult.success) {
|
|
435
453
|
this._emitError('Failed to get process instance', getProcessInstanceResult.error);
|
|
436
454
|
return;
|
|
@@ -445,6 +463,11 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
445
463
|
let incident = null;
|
|
446
464
|
if (hasIncident) {
|
|
447
465
|
const getProcessInstanceIncidentResult = await this._api.getProcessInstanceIncident(processInstanceKey);
|
|
466
|
+
if (/** @type {TaskExecutionStatus} */this._status === 'idle') {
|
|
467
|
+
// Execution was canceled in the meantime
|
|
468
|
+
this.cancelTaskExecution();
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
448
471
|
if (!getProcessInstanceIncidentResult.success) {
|
|
449
472
|
this._emitError('Failed to get process instance incident', getProcessInstanceIncidentResult.error);
|
|
450
473
|
return;
|
|
@@ -454,6 +477,11 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
454
477
|
const isCompleted = ['COMPLETED', 'TERMINATED', 'CANCELED'].includes(state);
|
|
455
478
|
if (isCompleted || hasIncident) {
|
|
456
479
|
const getProcessInstanceVariablesResult = await this._api.getProcessInstanceVariables(processInstanceKey);
|
|
480
|
+
if (/** @type {TaskExecutionStatus} */this._status === 'idle') {
|
|
481
|
+
// Execution was canceled in the meantime
|
|
482
|
+
this.cancelTaskExecution();
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
457
485
|
if (!getProcessInstanceVariablesResult.success) {
|
|
458
486
|
this._emitError('Failed to get process instance variables', getProcessInstanceVariablesResult.error);
|
|
459
487
|
return;
|
|
@@ -471,9 +499,7 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
471
499
|
}
|
|
472
500
|
|
|
473
501
|
/**
|
|
474
|
-
* Cancel current task execution, clean up and
|
|
475
|
-
* - `taskExecution.status.changed` with status `idle`
|
|
476
|
-
* - `taskExecution.canceled`
|
|
502
|
+
* Cancel current task execution, clean up and change status to `idle`.
|
|
477
503
|
*/
|
|
478
504
|
async cancelTaskExecution() {
|
|
479
505
|
// TODO: Proper clean up:
|
|
@@ -484,8 +510,7 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
484
510
|
if (this._interval) {
|
|
485
511
|
clearInterval(this._interval);
|
|
486
512
|
}
|
|
487
|
-
this.
|
|
488
|
-
this.emit('taskExecution.canceled');
|
|
513
|
+
this._changeStatus('idle');
|
|
489
514
|
}
|
|
490
515
|
|
|
491
516
|
/**
|
|
@@ -502,6 +527,15 @@ class TaskExecution extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
|
|
|
502
527
|
};
|
|
503
528
|
this.emit('taskExecution.error', error);
|
|
504
529
|
}
|
|
530
|
+
|
|
531
|
+
/** @param {TaskExecutionStatus} status */
|
|
532
|
+
_changeStatus(status, ...args) {
|
|
533
|
+
if (this._status === status) {
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
this._status = status;
|
|
537
|
+
this.emit('taskExecution.status.changed', status, ...args);
|
|
538
|
+
}
|
|
505
539
|
}
|
|
506
540
|
|
|
507
541
|
/**
|
|
@@ -1120,25 +1154,23 @@ function ErrorBanner({
|
|
|
1120
1154
|
}) {
|
|
1121
1155
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
1122
1156
|
className: "output__error",
|
|
1123
|
-
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.
|
|
1124
|
-
className: "output__error--
|
|
1125
|
-
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
1131
|
-
children: title
|
|
1132
|
-
}), actionLabel && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Link, {
|
|
1157
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
1158
|
+
className: "output__error--title",
|
|
1159
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
1160
|
+
children: title
|
|
1161
|
+
}), actionLabel && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
|
|
1162
|
+
className: "output__error--action",
|
|
1163
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Link, {
|
|
1133
1164
|
href: actionUrl,
|
|
1134
1165
|
onClick: () => onActionClick(),
|
|
1135
1166
|
children: actionLabel
|
|
1136
|
-
})]
|
|
1137
|
-
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
|
|
1138
|
-
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
1139
|
-
children: description
|
|
1140
1167
|
})
|
|
1141
1168
|
})]
|
|
1169
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
|
|
1170
|
+
className: "output__error--content",
|
|
1171
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
1172
|
+
children: description
|
|
1173
|
+
})
|
|
1142
1174
|
})]
|
|
1143
1175
|
});
|
|
1144
1176
|
}
|
|
@@ -1316,8 +1348,9 @@ const NO_ELEMENT_TEXT = 'Select a task to start testing';
|
|
|
1316
1348
|
* @param {import('../../types').Config|undefined} [props.config]
|
|
1317
1349
|
* @param {Function} [props.onConfigChanged=() => {}]
|
|
1318
1350
|
* @param {string} [props.operateBaseUrl]
|
|
1319
|
-
* @param {Function} [props.
|
|
1320
|
-
* @param {Function} [props.
|
|
1351
|
+
* @param {Function} [props.onTaskExecutionStarted=() => {}]
|
|
1352
|
+
* @param {Function} [props.onTaskExecutionFinished=() => {}]
|
|
1353
|
+
* @param {Function} [props.onTaskExecutionInterrupted=() => {}]
|
|
1321
1354
|
*/
|
|
1322
1355
|
function TaskTesting({
|
|
1323
1356
|
injector,
|
|
@@ -1330,8 +1363,9 @@ function TaskTesting({
|
|
|
1330
1363
|
config,
|
|
1331
1364
|
onConfigChanged = () => {},
|
|
1332
1365
|
operateBaseUrl,
|
|
1333
|
-
|
|
1334
|
-
|
|
1366
|
+
onTaskExecutionStarted = () => {},
|
|
1367
|
+
onTaskExecutionFinished = () => {},
|
|
1368
|
+
onTaskExecutionInterrupted = () => {}
|
|
1335
1369
|
}) {
|
|
1336
1370
|
/**
|
|
1337
1371
|
* @type {React.RefObject<ElementVariables?>}
|
|
@@ -1467,17 +1501,18 @@ function TaskTesting({
|
|
|
1467
1501
|
...output,
|
|
1468
1502
|
operateUrl
|
|
1469
1503
|
});
|
|
1504
|
+
onTaskExecutionFinished(element, output);
|
|
1470
1505
|
};
|
|
1471
1506
|
taskExecutionRef === null || taskExecutionRef === void 0 || (_taskExecutionRef$cur = taskExecutionRef.current) === null || _taskExecutionRef$cur === void 0 || _taskExecutionRef$cur.on('taskExecution.finished', handleFinished);
|
|
1472
1507
|
taskExecutionRef === null || taskExecutionRef === void 0 || (_taskExecutionRef$cur2 = taskExecutionRef.current) === null || _taskExecutionRef$cur2 === void 0 || _taskExecutionRef$cur2.on('taskExecution.status.changed', handleStatusChange);
|
|
1473
1508
|
taskExecutionRef === null || taskExecutionRef === void 0 || (_taskExecutionRef$cur3 = taskExecutionRef.current) === null || _taskExecutionRef$cur3 === void 0 || _taskExecutionRef$cur3.on('taskExecution.error', handleError);
|
|
1474
|
-
taskExecutionRef === null || taskExecutionRef === void 0 || (_taskExecutionRef$cur4 = taskExecutionRef.current) === null || _taskExecutionRef$cur4 === void 0 || _taskExecutionRef$cur4.on('taskExecution.
|
|
1509
|
+
taskExecutionRef === null || taskExecutionRef === void 0 || (_taskExecutionRef$cur4 = taskExecutionRef.current) === null || _taskExecutionRef$cur4 === void 0 || _taskExecutionRef$cur4.on('taskExecution.interrupted', () => onTaskExecutionInterrupted());
|
|
1475
1510
|
return () => {
|
|
1476
1511
|
if (taskExecutionRef.current) {
|
|
1477
1512
|
taskExecutionRef.current.off('taskExecution.finished', handleFinished);
|
|
1478
1513
|
taskExecutionRef.current.off('taskExecution.status.changed', handleStatusChange);
|
|
1479
1514
|
taskExecutionRef.current.off('taskExecution.error', handleError);
|
|
1480
|
-
taskExecutionRef.current.off('taskExecution.
|
|
1515
|
+
taskExecutionRef.current.off('taskExecution.interrupted', () => onTaskExecutionInterrupted());
|
|
1481
1516
|
}
|
|
1482
1517
|
};
|
|
1483
1518
|
}, [element]);
|
|
@@ -1514,11 +1549,14 @@ function TaskTesting({
|
|
|
1514
1549
|
const inputConfig = await elementConfigRef.current.getInputConfigForElement(element);
|
|
1515
1550
|
elementConfigRef.current.setOutputConfigForElement(element, null);
|
|
1516
1551
|
taskExecutionRef.current.executeTask(element.id, JSON.parse(inputConfig));
|
|
1517
|
-
|
|
1552
|
+
onTaskExecutionStarted(element);
|
|
1518
1553
|
};
|
|
1519
1554
|
const handleCancelTaskExecution = () => {
|
|
1520
|
-
|
|
1521
|
-
|
|
1555
|
+
var _taskExecutionRef$cur5;
|
|
1556
|
+
taskExecutionRef === null || taskExecutionRef === void 0 || (_taskExecutionRef$cur5 = taskExecutionRef.current) === null || _taskExecutionRef$cur5 === void 0 || _taskExecutionRef$cur5.cancelTaskExecution();
|
|
1557
|
+
if (output !== null && output !== void 0 && output.operateUrl && Object.keys(output).length === 1) {
|
|
1558
|
+
var _elementConfigRef$cur7;
|
|
1559
|
+
elementConfigRef === null || elementConfigRef === void 0 || (_elementConfigRef$cur7 = elementConfigRef.current) === null || _elementConfigRef$cur7 === void 0 || _elementConfigRef$cur7.setOutputConfigForElement(element, null);
|
|
1522
1560
|
}
|
|
1523
1561
|
};
|
|
1524
1562
|
const handleResetOutput = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
@@ -1558,8 +1596,11 @@ function TaskTesting({
|
|
|
1558
1596
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("div", {
|
|
1559
1597
|
className: "task-testing__container--header",
|
|
1560
1598
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("div", {
|
|
1561
|
-
className: "task-
|
|
1562
|
-
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(
|
|
1599
|
+
className: "task-header",
|
|
1600
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("span", {
|
|
1601
|
+
className: "task-type",
|
|
1602
|
+
children: (0,_utils_element__WEBPACK_IMPORTED_MODULE_10__.getType)(element)
|
|
1603
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("span", {
|
|
1563
1604
|
children: (0,_utils_element__WEBPACK_IMPORTED_MODULE_10__.getName)(element)
|
|
1564
1605
|
})]
|
|
1565
1606
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Tooltip, {
|
|
@@ -2003,7 +2044,8 @@ function hasPropertyAfter(state, pos) {
|
|
|
2003
2044
|
|
|
2004
2045
|
__webpack_require__.r(__webpack_exports__);
|
|
2005
2046
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2006
|
-
/* harmony export */ getName: () => (/* binding */ getName)
|
|
2047
|
+
/* harmony export */ getName: () => (/* binding */ getName),
|
|
2048
|
+
/* harmony export */ getType: () => (/* binding */ getType)
|
|
2007
2049
|
/* harmony export */ });
|
|
2008
2050
|
/* harmony import */ var bpmn_js_lib_util_ModelUtil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bpmn-js/lib/util/ModelUtil */ "./node_modules/bpmn-js/lib/util/ModelUtil.js");
|
|
2009
2051
|
|
|
@@ -2024,6 +2066,40 @@ function getName(element) {
|
|
|
2024
2066
|
return name;
|
|
2025
2067
|
}
|
|
2026
2068
|
|
|
2069
|
+
/**
|
|
2070
|
+
* Get the name of a BPMN element.
|
|
2071
|
+
*
|
|
2072
|
+
* @param {import('../types').Element} element
|
|
2073
|
+
*
|
|
2074
|
+
* @returns {string}
|
|
2075
|
+
*/
|
|
2076
|
+
function getType(element) {
|
|
2077
|
+
const businessObject = (0,bpmn_js_lib_util_ModelUtil__WEBPACK_IMPORTED_MODULE_0__.getBusinessObject)(element);
|
|
2078
|
+
const {
|
|
2079
|
+
$type: type
|
|
2080
|
+
} = businessObject;
|
|
2081
|
+
switch (type) {
|
|
2082
|
+
case 'bpmn:Task':
|
|
2083
|
+
return 'Task';
|
|
2084
|
+
case 'bpmn:UserTask':
|
|
2085
|
+
return 'User Task';
|
|
2086
|
+
case 'bpmn:ScriptTask':
|
|
2087
|
+
return 'Script Task';
|
|
2088
|
+
case 'bpmn:ServiceTask':
|
|
2089
|
+
return 'Service Task';
|
|
2090
|
+
case 'bpmn:BusinessRuleTask':
|
|
2091
|
+
return 'Business Rule Task';
|
|
2092
|
+
case 'bpmn:SendTask':
|
|
2093
|
+
return 'Send Task';
|
|
2094
|
+
case 'bpmn:ManualTask':
|
|
2095
|
+
return 'Manual Task';
|
|
2096
|
+
case 'bpmn:ReceiveTask':
|
|
2097
|
+
return 'Receive Task';
|
|
2098
|
+
default:
|
|
2099
|
+
return 'Task';
|
|
2100
|
+
}
|
|
2101
|
+
}
|
|
2102
|
+
|
|
2027
2103
|
/***/ }),
|
|
2028
2104
|
|
|
2029
2105
|
/***/ "./node_modules/@bpmn-io/extract-process-variables/zeebe/index.mjs":
|
|
@@ -2757,8 +2833,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2757
2833
|
/* harmony import */ var bpmn_js_lib_util_ModelUtil__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! bpmn-js/lib/util/ModelUtil */ "./node_modules/bpmn-js/lib/util/ModelUtil.js");
|
|
2758
2834
|
/* harmony import */ var _util_CachedValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/CachedValue */ "./node_modules/@bpmn-io/variable-resolver/lib/base/util/CachedValue.js");
|
|
2759
2835
|
/* harmony import */ var _util_scopeUtil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/scopeUtil */ "./node_modules/@bpmn-io/variable-resolver/lib/base/util/scopeUtil.js");
|
|
2760
|
-
/* harmony import */ var min_dash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! min-dash */ "./node_modules/min-dash/dist/index.esm.js");
|
|
2761
|
-
|
|
2762
2836
|
|
|
2763
2837
|
|
|
2764
2838
|
|
|
@@ -2777,6 +2851,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2777
2851
|
* @typedef {AdditionalVariable} ProcessVariable
|
|
2778
2852
|
* @property {Array<ModdleElement>} origin
|
|
2779
2853
|
* @property {ModdleElement} scope
|
|
2854
|
+
* @property {Array<Object>} provider
|
|
2780
2855
|
*/
|
|
2781
2856
|
|
|
2782
2857
|
/**
|
|
@@ -2809,7 +2884,7 @@ class BaseVariableResolver {
|
|
|
2809
2884
|
}
|
|
2810
2885
|
|
|
2811
2886
|
/**
|
|
2812
|
-
* To be implemented by
|
|
2887
|
+
* To be implemented by a subclass. This should be an instance of `getProcessVariables` from `@bpmn-io/extract-process-variables`,
|
|
2813
2888
|
* either C7 or C8.
|
|
2814
2889
|
*
|
|
2815
2890
|
* @returns {Promise<Array<ProcessVariable>>}
|
|
@@ -3018,24 +3093,40 @@ class BaseVariableResolver {
|
|
|
3018
3093
|
const root = getRootElement(bo);
|
|
3019
3094
|
const allVariables = await this.getProcessVariables(root);
|
|
3020
3095
|
|
|
3021
|
-
// keep only unique variables based on name property
|
|
3022
|
-
const uniqueVariables = (0,min_dash__WEBPACK_IMPORTED_MODULE_3__.uniqueBy)('name', allVariables.reverse());
|
|
3023
|
-
|
|
3024
3096
|
// (1) get variables for given scope
|
|
3025
|
-
var scopeVariables =
|
|
3097
|
+
var scopeVariables = allVariables.filter(function(variable) {
|
|
3026
3098
|
return variable.scope.id === bo.id;
|
|
3027
3099
|
});
|
|
3028
3100
|
|
|
3029
3101
|
// (2) get variables for parent scopes
|
|
3030
3102
|
var parents = (0,_util_scopeUtil__WEBPACK_IMPORTED_MODULE_1__.getParents)(bo);
|
|
3031
3103
|
|
|
3032
|
-
var parentsScopeVariables =
|
|
3104
|
+
var parentsScopeVariables = allVariables.filter(function(variable) {
|
|
3033
3105
|
return parents.find(function(parent) {
|
|
3034
3106
|
return parent.id === variable.scope.id;
|
|
3035
3107
|
});
|
|
3036
3108
|
});
|
|
3037
3109
|
|
|
3038
|
-
|
|
3110
|
+
const reversedVariables = [ ...scopeVariables, ...parentsScopeVariables ].reverse();
|
|
3111
|
+
|
|
3112
|
+
const seenNames = new Set();
|
|
3113
|
+
|
|
3114
|
+
return reversedVariables.filter(variable => {
|
|
3115
|
+
|
|
3116
|
+
// if external variable, keep
|
|
3117
|
+
if (variable.provider.find(extractor => extractor !== this._baseExtractor)) {
|
|
3118
|
+
return true;
|
|
3119
|
+
}
|
|
3120
|
+
|
|
3121
|
+
// if not external, keep only the first occurrence of each name
|
|
3122
|
+
if (!seenNames.has(variable.name)) {
|
|
3123
|
+
seenNames.add(variable.name);
|
|
3124
|
+
|
|
3125
|
+
return true;
|
|
3126
|
+
}
|
|
3127
|
+
|
|
3128
|
+
return false;
|
|
3129
|
+
});
|
|
3039
3130
|
}
|
|
3040
3131
|
}
|
|
3041
3132
|
|
|
@@ -32526,11 +32617,13 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.task-testing__container {
|
|
|
32526
32617
|
gap: 12px;
|
|
32527
32618
|
width: 100%;
|
|
32528
32619
|
}
|
|
32529
|
-
.task-testing__container .task-testing__container--header .task-
|
|
32620
|
+
.task-testing__container .task-testing__container--header .task-header {
|
|
32530
32621
|
display: flex;
|
|
32531
|
-
font-weight: bold;
|
|
32532
32622
|
gap: 6px;
|
|
32533
32623
|
}
|
|
32624
|
+
.task-testing__container .task-testing__container--header .task-header .task-type {
|
|
32625
|
+
font-weight: bold;
|
|
32626
|
+
}
|
|
32534
32627
|
.task-testing__container .task-testing__container--header .btn-execute {
|
|
32535
32628
|
width: 138px;
|
|
32536
32629
|
}
|
|
@@ -32613,7 +32706,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.task-testing__container {
|
|
|
32613
32706
|
}
|
|
32614
32707
|
.task-testing__container .output .output__error {
|
|
32615
32708
|
display: flex;
|
|
32616
|
-
flex-direction:
|
|
32709
|
+
flex-direction: column;
|
|
32617
32710
|
gap: 12px;
|
|
32618
32711
|
padding: 12px;
|
|
32619
32712
|
margin-bottom: 12px;
|
|
@@ -32621,24 +32714,18 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.task-testing__container {
|
|
|
32621
32714
|
border-left-width: 3px;
|
|
32622
32715
|
background-color: #fff1f1;
|
|
32623
32716
|
}
|
|
32624
|
-
.task-testing__container .output .output__error .output__error--
|
|
32717
|
+
.task-testing__container .output .output__error .output__error--title {
|
|
32625
32718
|
display: flex;
|
|
32626
|
-
flex-direction:
|
|
32627
|
-
|
|
32628
|
-
flex-grow: 1;
|
|
32629
|
-
margin-top: 1px;
|
|
32630
|
-
}
|
|
32631
|
-
.task-testing__container .output .output__error .output__error--content .output__error--title {
|
|
32632
|
-
display: flex;
|
|
32633
|
-
justify-content: space-between;
|
|
32719
|
+
flex-direction: row;
|
|
32720
|
+
align-items: center;
|
|
32634
32721
|
font-weight: bold;
|
|
32635
32722
|
}
|
|
32636
|
-
.task-testing__container .output .output__error .output__error--
|
|
32637
|
-
cursor: pointer;
|
|
32638
|
-
}
|
|
32639
|
-
.task-testing__container .output .output__error .output__error--icon svg {
|
|
32723
|
+
.task-testing__container .output .output__error .output__error--title svg {
|
|
32640
32724
|
fill: #da1e28;
|
|
32641
32725
|
}
|
|
32726
|
+
.task-testing__container .output .output__error .output__error--title .output__error--action {
|
|
32727
|
+
margin-left: auto;
|
|
32728
|
+
}
|
|
32642
32729
|
.task-testing__container .output .output__variables--empty {
|
|
32643
32730
|
height: 32px;
|
|
32644
32731
|
display: flex;
|
|
@@ -32722,7 +32809,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.task-testing__container {
|
|
|
32722
32809
|
}
|
|
32723
32810
|
.code__editor .code__editor-copy-button svg {
|
|
32724
32811
|
fill: #525252;
|
|
32725
|
-
}`, "",{"version":3,"sources":["webpack://./lib/style/style.scss"],"names":[],"mappings":"AAAA;EACE,aAAA;EACA,mBAAA;EACA,YAAA;EACA,WAAA;EACA,aAAA;EACA,eAAA;AACF;AAEI;;EAEE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,YAAA;AAAN;AAEM;;EACE,oBAAA;EACA,uBAAA;AACR;AAIE;EACE,UAAA;EACA,aAAA;EACA,sBAAA;EACA,+BAAA;EACA,kBAAA;AAFJ;AAKE;EACE,UAAA;EACA,aAAA;EACA,sBAAA;EACA,iBAAA;AAHJ;AAME;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,SAAA;EACA,WAAA;AAJJ;AAMI;EACE,aAAA;EACA,
|
|
32812
|
+
}`, "",{"version":3,"sources":["webpack://./lib/style/style.scss"],"names":[],"mappings":"AAAA;EACE,aAAA;EACA,mBAAA;EACA,YAAA;EACA,WAAA;EACA,aAAA;EACA,eAAA;AACF;AAEI;;EAEE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,YAAA;AAAN;AAEM;;EACE,oBAAA;EACA,uBAAA;AACR;AAIE;EACE,UAAA;EACA,aAAA;EACA,sBAAA;EACA,+BAAA;EACA,kBAAA;AAFJ;AAKE;EACE,UAAA;EACA,aAAA;EACA,sBAAA;EACA,iBAAA;AAHJ;AAME;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,SAAA;EACA,WAAA;AAJJ;AAMI;EACE,aAAA;EACA,QAAA;AAJN;AAMM;EACE,iBAAA;AAJR;AAQI;EACE,YAAA;AANN;AASI;EACE,aAAA;AAPN;AAUI;EACE,aAAA;AARN;AAWI;EACE,oBAAA;EACA,uBAAA;AATN;AAaE;EACE,YAAA;EACA,aAAA;EACA,sBAAA;EACA,QAAA;AAXJ;AAaI;EACE,aAAA;EACA,mBAAA;EACA,QAAA;AAXN;AAcI;EACE,cAAA;AAZN;AAgBE;EACE,YAAA;EACA,aAAA;EACA,sBAAA;EACA,QAAA;AAdJ;AAgBI;EACE,aAAA;EACA,mBAAA;EACA,YAAA;EACA,WAAA;AAdN;AAiBI;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,QAAA;AAfN;AAiBM;EACE,aAAA;AAfR;AAkBM;EACE,aAAA;AAhBR;AAmBM;EACE,aAAA;AAjBR;AAoBM;EACE,iBAAA;EACA,uBAAA;AAlBR;AAsBI;EACE,iBAAA;AApBN;AAuBI;EACE,aAAA;EACA,sBAAA;EACA,YAAA;EACA,kBAAA;AArBN;AAuBM;EACE,oCAAA;AArBR;AAwBM;EACE,UAAA;EACA,yBAAA;AAtBR;AAyBM;EACE,aAAA;AAvBR;AA2BM;EACE,aAAA;AAzBR;AA6BI;EACE,aAAA;EACA,sBAAA;EACA,SAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,sBAAA;EACA,yBAAA;AA3BN;AA6BM;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,iBAAA;AA3BR;AA6BQ;EACE,aAAA;AA3BV;AA8BQ;EACE,iBAAA;AA5BV;AAiCI;EACE,YAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;AA/BN;AAkCI;EACE,iBAAA;AAhCN;AAmCI;EACE,WAAA;AAjCN;AAoCI;EACE,qBAAA;EACA,YAAA;AAlCN;AAqCI;EACE,eAAA;AAnCN;;AAwCA;EACE,kBAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;AArCF;AAuCE;EACE,0BAAA;EACA,oBAAA;AArCJ;AAwCE;EACE,kBAAA;EACA,YAAA;AAtCJ;AAwCI;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;AAtCN;AAwCM;EACE,YAAA;EACA,2CAAA;AAtCR;AAyCM;EACE,2BAAA;AAvCR;AA0CM;EACE,aAAA;AAxCR;AA2CM;EACE,aAAA;AAzCR;AA4CM;EACE,eAAA;AA1CR;AA6CM;EACE,YAAA;EACA,sBAAA;EACA,eAAA;EACA,gBAAA;EACA,qBAAA;AA3CR;AA6CQ;EACE,kBAAA;AA3CV;AA8CQ;EACE,eAAA;AA5CV;AAkDE;EACE,cAAA;EACA,eAAA;EACA,eAAA;AAhDJ;AAmDE;EACE,kBAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;AAjDJ;AAmDI;EACE,aAAA;AAjDN","sourcesContent":[".task-testing__container {\n display: flex;\n flex-direction: row;\n height: 100%;\n width: 100%;\n padding: 10px;\n font-size: 14px;\n\n &.task-testing__container--empty {\n .task-testing__container-no-config,\n .task-testing__container-no-element {\n display: flex;\n align-items: center;\n gap: 5px;\n height: 32px;\n\n .cds--inline-loading {\n inline-size: initial;\n min-block-size: initial;\n }\n }\n }\n\n .task-testing__container--left {\n width: 50%;\n display: flex;\n flex-direction: column;\n border-right: 1px solid #E0E0E0;\n padding-right: 6px;\n }\n\n .task-testing__container--right {\n width: 50%;\n display: flex;\n flex-direction: column;\n padding-left: 6px;\n }\n\n .task-testing__container--header {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n\n .task-header {\n display: flex;\n gap: 6px;\n \n .task-type {\n font-weight: bold;\n }\n }\n\n .btn-execute {\n width: 138px;\n }\n\n .cds--popover-container:not(.has-error) .cds--popover {\n display: none;\n }\n\n .cds--tooltip-content {\n padding: 12px;\n }\n\n .cds--btn .cds--inline-loading {\n inline-size: initial;\n min-block-size: initial;\n }\n }\n\n .input {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n gap: 5px;\n\n .input__header {\n display: flex;\n align-items: center;\n gap: 5px;\n }\n\n .input__header--title {\n color: #525252;\n }\n }\n\n .output {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n gap: 5px;\n\n .output__header {\n display: flex;\n align-items: center;\n height: 32px;\n width: 100%;\n }\n\n .output__header--title {\n color: #525252;\n display: flex;\n align-items: center;\n gap: 6px;\n\n svg.output__status-icon--ready {\n fill: #0043ce;\n }\n\n svg.output__status-icon--success {\n fill: #24a148;\n }\n\n svg.output__status-icon--error {\n fill: #da1e28;\n }\n\n .cds--inline-loading {\n inline-size: 16px;\n min-block-size: initial;\n }\n }\n\n .output__header--button-operate {\n margin-left: auto;\n }\n\n .output__body {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n position: relative;\n\n .cds--tabs {\n --cds-layout-size-height-local: 32px;\n }\n \n .cds--tab-content {\n padding: 0;\n height: calc(100% - 20px);\n }\n\n .cds--tab-content:not([hidden]) {\n display: flex;\n }\n\n // Tooltip on Carbon Button with absolute position is broken.\n .cds--popover {\n display: none;\n }\n }\n\n .output__error {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n margin-bottom: 12px;\n border: 1px solid #da1e28;\n border-left-width: 3px;\n background-color: #fff1f1;\n\n .output__error--title {\n display: flex;\n flex-direction: row;\n align-items: center;\n font-weight: bold;\n\n svg {\n fill: #da1e28;\n }\n\n .output__error--action {\n margin-left: auto;\n }\n }\n }\n\n .output__variables--empty {\n height: 32px;\n display: flex;\n align-items: center;\n color: #525252;\n }\n\n .output__variables--empty-action {\n font-weight: bold;\n }\n\n .cds--snippet-container {\n width: 100%;\n }\n\n .cds--snippet {\n max-inline-size: 100%;\n height: 100%;\n }\n\n code {\n font-size: 14px;\n }\n }\n}\n\n.code__editor {\n position: relative;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n\n &.code__editor--error .code__editor-codemirror .code__editor-codemirror-inner .cm-editor {\n outline: 1px solid #da1e28;\n outline-offset: -1px;\n }\n\n .code__editor-codemirror {\n position: relative;\n flex-grow: 1;\n\n .code__editor-codemirror-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n .cm-editor {\n height: 100%;\n background-color: var(--cds-layer, #f4f4f4);\n }\n\n .cm-scroller {\n overflow-y: auto !important;\n }\n\n .cm-content {\n padding: 15px;\n }\n\n .cm-focused {\n outline: none;\n }\n\n .cm-tooltip {\n font-size: 14px;\n }\n\n .info {\n padding: 5px;\n font-family: monospace;\n font-size: 12px;\n max-width: 300px;\n word-wrap: break-word;\n\n span {\n font-style: italic;\n }\n\n pre {\n margin-top: 5px;\n }\n }\n }\n }\n\n .code__editor-error {\n color: #da1e28;\n font-size: 13px;\n margin-top: 5px;\n }\n\n .code__editor-copy-button {\n position: absolute;\n top: 10px;\n right: 10px;\n z-index: 10;\n\n svg {\n fill: #525252;\n }\n }\n}"],"sourceRoot":""}]);
|
|
32726
32813
|
// Exports
|
|
32727
32814
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
32728
32815
|
|