n8n-editor-ui 1.90.1 → 1.92.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.
- package/dist/assets/{AnimatedSpinner-ChThynSJ.js → AnimatedSpinner-CtKKeDrz.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-WGp2Kuen.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DR6h_xsK.js} +1 -1
- package/dist/assets/{AuthView-Dlhn_SQ-.js → AuthView-mKkzBRxh.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-BuBg7TJP.js → CanvasChatSwitch-Bu2VD2kp.js} +24 -12
- package/dist/assets/{ChangePasswordView-BKYXOoDf.js → ChangePasswordView-D5UI1v-J.js} +3 -3
- package/dist/assets/CollectionParameter-BeCTpZ-q.js +4 -0
- package/dist/assets/{CredentialsView-BNWIgrLb.js → CredentialsView-B78eNJO5.js} +10 -9
- package/dist/assets/{DemoFooter-DR6r_2qR.js → DemoFooter-DP26HpCu.js} +8 -8
- package/dist/assets/{ErrorView-Bu8Mt5FH.js → ErrorView-C3fvEdCg.js} +1 -1
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DvtOOOhh.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-BBpwYdHY.js} +2 -2
- package/dist/assets/{ExecutionsView-C0WZAIi0.js → ExecutionsView-BvlDZwIs.js} +11 -10
- package/dist/assets/{FileSaver.min-Cm0u4qyc.js → FileSaver.min-BzAtcQXX.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-KmRZtBiP.js → FixedCollectionParameter-CS5zXMAh.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-GH7SqEFu.js → ForgotMyPasswordView-CVQ7pcIG.js} +3 -3
- package/dist/assets/{InsightsChartAverageRuntime-SeBUN06R.js → InsightsChartAverageRuntime-Boh0SMb3.js} +7 -6
- package/dist/assets/{InsightsChartFailed-TYjH8LwV.js → InsightsChartFailed-IZ-KYOU9.js} +7 -6
- package/dist/assets/{InsightsChartFailureRate-D41Jv-6v.js → InsightsChartFailureRate-2fWw3p0L.js} +7 -6
- package/dist/assets/{InsightsChartTimeSaved-TLPDAmPx.js → InsightsChartTimeSaved-B2pLVys1.js} +7 -6
- package/dist/assets/{InsightsChartTotal-CaKTe2mv.js → InsightsChartTotal-2QD4wPLR.js} +7 -6
- package/dist/assets/{InsightsDashboard-DPVczYm3.css → InsightsDashboard-Bx4vx9gz.css} +16 -0
- package/dist/assets/InsightsDashboard-CbiFbJ8w.js +372 -0
- package/dist/assets/{InsightsPaywall-Z4Y0nO-i.js → InsightsPaywall-5d-cSdiS.js} +1 -1
- package/dist/assets/{InsightsSummary-FixbpmPJ.css → InsightsSummary-CdlaUpAt.css} +25 -25
- package/dist/assets/{InsightsSummary-DzYli0Pu.js → InsightsSummary-gldDQ9rg.js} +16 -17
- package/dist/assets/{InsightsTableWorkflows-CUHAG57c.js → InsightsTableWorkflows-_eTCUNCX.js} +2 -2
- package/dist/assets/{Logo-Dxp4M9dy.js → Logo-Dl2xVRIu.js} +1 -1
- package/dist/assets/{LogsPanel-zIrTNE6j.js → LogsPanel-JnYirDqa.js} +520 -436
- package/dist/assets/{LogsPanel-DmPMCt9w.css → LogsPanel-mTaFEGk_.css} +208 -98
- package/dist/assets/{MainHeader-D4cIIoUA.js → MainHeader-Bk29pgmL.js} +122 -295
- package/dist/assets/MainHeader-CEPLiR-5.css +1044 -0
- package/dist/assets/{MainSidebar-BtW-9UPT.js → MainSidebar-BM5ku_wM.js} +11 -11
- package/dist/assets/{MainSidebar-CKMiDGvH.css → MainSidebar-zZpP3qQ0.css} +13 -12
- package/dist/assets/{NodeCreation-thD32mA1.js → NodeCreation-BEjdAYc_.js} +4 -4
- package/dist/assets/{NodeCreator-B4mHaU45.js → NodeCreator-cEUgbAI9.js} +14 -4
- package/dist/assets/{NodeDetailsView-cO3Ci9jH.js → NodeDetailsView-D4O9dKTA.js} +93 -68
- package/dist/assets/{NodeDetailsView-CGgV4Pn_.css → NodeDetailsView-DsFLtbxi.css} +20 -20
- package/dist/assets/{NodeView-E5b1ClVD.js → NodeView-DDSOUm8E.js} +152 -34
- package/dist/assets/{ProjectCardBadge-LnLKqSK-.js → ProjectCardBadge-BNn2hiMe.js} +1 -1
- package/dist/assets/{ProjectHeader-DC02ZuZ0.js → ProjectHeader-CaEZ2OPj.js} +1 -1
- package/dist/assets/{ProjectSettings-Zr1UOp7s.js → ProjectSettings-otA8E-yW.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CM7WIpD3.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-C3JbZMCk.js} +1 -1
- package/dist/assets/{ResourcesListLayout-DTsuHdYx.js → ResourcesListLayout-1d9Ic6VX.js} +2 -2
- package/dist/assets/{ResourcesListLayout-CglK2dXR.css → ResourcesListLayout-CtGME7aU.css} +8 -8
- package/dist/assets/{RunData-DepHcD2K.css → RunData-BjlZgIyx.css} +102 -73
- package/dist/assets/{RunData-Ds-U68nr.js → RunData-Bx47sNQp.js} +690 -398
- package/dist/assets/{RunDataAi-BF2gZZGr.css → RunDataAi-D9VLFXIf.css} +10 -51
- package/dist/assets/{RunDataAi-DdK11EHU.js → RunDataAi-DOac7nwD.js} +27 -310
- package/dist/assets/{RunDataJson-Txw0lqay.css → RunDataJson-BH9HLoGC.css} +12 -8
- package/dist/assets/{RunDataJson-B2WU5od1.js → RunDataJson-Pev6yNEV.js} +20 -14
- package/dist/assets/{RunDataJsonActions-DqZ2X1yJ.js → RunDataJsonActions-Co4xgmVq.js} +1 -1
- package/dist/assets/RunDataParsedAiContent-9EEUzCKp.css +176 -0
- package/dist/assets/RunDataParsedAiContent-D6MNLmT3.js +148 -0
- package/dist/assets/{RunDataSearch-CQsyZvGK.js → RunDataSearch-C8orcAlP.js} +1 -1
- package/dist/assets/{RunDataTable-DyUvXWfl.css → RunDataTable-CUxj7dHx.css} +47 -39
- package/dist/assets/{RunDataTable-BO0R4JT_.js → RunDataTable-oi_l8dhA.js} +41 -30
- package/dist/assets/{SamlOnboarding-CmwMX5y2.js → SamlOnboarding-CT5J6dx0.js} +3 -3
- package/dist/assets/{SettingsApiView-D6uBbi9-.js → SettingsApiView-CupjcI9v.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-CJODtx_K.js → SettingsCommunityNodesView-B5K2VLyJ.js} +4 -4
- package/dist/assets/{SettingsExternalSecrets-CVk14P_P.js → SettingsExternalSecrets-BidJCf_t.js} +1 -1
- package/dist/assets/{SettingsLdapView-pg71FErj.js → SettingsLdapView-Cva6akhW.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-DUOI3Xb9.js → SettingsLogStreamingView-Cy-rAKUO.js} +1 -1
- package/dist/assets/{SettingsPersonalView-BFnOmBPC.js → SettingsPersonalView-ZJ1Syok2.js} +14 -13
- package/dist/assets/{SettingsSourceControl-BUNmxcvB.js → SettingsSourceControl-CMtqqlkO.js} +1 -1
- package/dist/assets/{SettingsSso-Dx8Qw_2Z.js → SettingsSso-Bi3OpykL.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-DTk86tXU.js → SettingsUsageAndPlan-C5TbwZhP.js} +1 -1
- package/dist/assets/{SettingsUsersView-BviXcl30.js → SettingsUsersView-BHuP5k0A.js} +1 -1
- package/dist/assets/{SettingsView-fzPdUijx.js → SettingsView-DPIIqaKN.js} +1 -1
- package/dist/assets/{SetupView-DUTx1JXK.js → SetupView-C4V9j6sh.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-fApxCGHh.js → SetupWorkflowCredentialsButton-BZ9ILQUp.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-C5t9fEKF.js → SetupWorkflowFromTemplateView-3uV3zSU2.js} +3 -3
- package/dist/assets/{SigninView-BRVoXQRW.js → SigninView-DWZHdCjG.js} +3 -3
- package/dist/assets/{SignoutView-Duh6wb4Y.js → SignoutView-DbduXAir.js} +1 -1
- package/dist/assets/{SignupView-DMkpTtjs.js → SignupView-DWq6VACk.js} +3 -3
- package/dist/assets/{TemplateDetails-Df9_jph6.js → TemplateDetails-BckqE6GK.js} +1 -1
- package/dist/assets/{TemplateList-qSnJvw0K.js → TemplateList-Bw0JeBMP.js} +1 -1
- package/dist/assets/{TemplatesCollectionView--ccYXaCo.js → TemplatesCollectionView-CAKT-mpV.js} +5 -5
- package/dist/assets/{TemplatesSearchView-D1YgHKld.js → TemplatesSearchView-I2a5us58.js} +3 -3
- package/dist/assets/{TemplatesView-B9CwObHN.js → TemplatesView-6EwGFFJK.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-DtLpUF59.js → TemplatesWorkflowView-C8xYMhwu.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-DFcBlKnN.js → TestDefinitionEditView-CNd3Cuzq.js} +8 -8
- package/dist/assets/{TestDefinitionListView-C_mbolTO.js → TestDefinitionListView-BwTWIaAM.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-CvyM6TLE.js → TestDefinitionNewView-BQas0_G1.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-BXzJY0cY.js → TestDefinitionRootView-D971MFye.js} +1 -1
- package/dist/assets/{VariablesView-BHFJj5IU.js → VariablesView-DcBBuFxh.js} +3 -3
- package/dist/assets/{WorkerView-CgIksFjP.js → WorkerView-DSgBNIeb.js} +6 -6
- package/dist/assets/WorkflowActivator-CPCbgb_n.js +776 -0
- package/dist/assets/{MainHeader-CWA2JfVJ.css → WorkflowActivator-DAyH7N29.css} +74 -434
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BcBLZ_Ul.js → WorkflowExecutionsInfoAccordion-Bc6vzAZu.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-B9ByHnbR.js → WorkflowExecutionsLandingPage-BPPS4V9i.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DCE7TYLh.js → WorkflowExecutionsPreview-Bbb5MB8Z.js} +6 -6
- package/dist/assets/{WorkflowExecutionsView-DFoBpdS7.js → WorkflowExecutionsView-Pz-7iHJY.js} +11 -9
- package/dist/assets/{WorkflowHistory-DolmPUM2.js → WorkflowHistory-Czo9IuI6.js} +4 -4
- package/dist/assets/{WorkflowOnboardingView-DQW48M8_.js → WorkflowOnboardingView-B8DdkfJ5.js} +1 -1
- package/dist/assets/{WorkflowPreview-BFR6V9SO.js → WorkflowPreview-eVlO1itk.js} +1 -1
- package/dist/assets/{WorkflowsView-CsM69PSv.css → WorkflowsView-B2_HJCJ5.css} +28 -162
- package/dist/assets/{WorkflowsView-B-feKuLZ.js → WorkflowsView-Cr2D0vym.js} +124 -217
- package/dist/assets/{chartjs.utils-BcXTJ2Te.js → chartjs.utils-Dk1WO3Mr.js} +2 -2
- package/dist/assets/{dateFormatter-CZI1kGYK.js → dateFormatter-C8N5khiG.js} +5 -5
- package/dist/assets/{easyAiWorkflowUtils-ChToD_Yl.js → easyAiWorkflowUtils-CLqHnasO.js} +1 -1
- package/dist/assets/{global-link-actions-OGaZVwsw.js → global-link-actions-BvoZh8u9.js} +1 -1
- package/dist/assets/{import-curl-CAszzwx1.js → import-curl-BpxkGYMX.js} +1 -1
- package/dist/assets/{index-BpdkKRP4.js → index-B6eunbxp.js} +14227 -11881
- package/dist/assets/{index-7WdERzqm.js → index-Br8T1Gn6.js} +1 -1
- package/dist/assets/{index-C5OXOcIJ.css → index-DCpy4nCU.css} +6147 -4061
- package/dist/assets/{pickBy-mYqFOFbh.js → pickBy-8Urz9lDY.js} +1 -1
- package/dist/assets/{templateActions-BX9arLbc.js → templateActions-DzjysjbQ.js} +1 -1
- package/dist/assets/{useBeforeUnload-K7nQ15Rk.js → useBeforeUnload-DxrN8vOO.js} +1 -1
- package/dist/assets/{useCanvasMapping-D_UPCxYX.js → useCanvasMapping-C2BQB9QB.js} +270 -112
- package/dist/assets/{useCanvasMapping-C--wac6H.css → useCanvasMapping-cuXLM-h-.css} +185 -4
- package/dist/assets/{useCanvasOperations-D6VFiC3b.js → useCanvasOperations-DaP5jKbH.js} +4 -3
- package/dist/assets/{useClearExecutionButtonVisible-D_0O6f0X.js → useClearExecutionButtonVisible-BV-jMf2m.js} +2 -2
- package/dist/assets/{useExecutionDebugging-BNMaKOh7.js → useExecutionDebugging-0pPCimcw.js} +1 -1
- package/dist/assets/{useExecutionHelpers-DN5HqPqY.js → useExecutionHelpers-DIvhViMz.js} +2 -2
- package/dist/assets/{useImportCurlCommand-BSL596XF.js → useImportCurlCommand-BWf4R83s.js} +19 -10
- package/dist/assets/usePushConnection-Pobjq0U9.js +632 -0
- package/dist/assets/{useTestDefinitionForm-CIhrxyve.js → useTestDefinitionForm-BA3IS_2B.js} +1 -1
- package/dist/assets/{useWorkflowActivate-pZ62ib_C.js → useWorkflowActivate-DFqvrpj6.js} +1 -1
- package/dist/assets/useWorkflowSaving-BACesUoL.js +66 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/vite.config.mts +15 -1
- package/dist/assets/CollectionParameter-CQXiWluX.js +0 -4
- package/dist/assets/InsightsDashboard-o3JS9fjz.js +0 -178
- package/dist/assets/WorkflowActivator-BX59FxTZ.css +0 -260
- package/dist/assets/WorkflowActivator-O6i5XAk2.js +0 -231
- package/dist/assets/usePushConnection-BdV7ILvK.js +0 -535
|
@@ -0,0 +1,632 @@
|
|
|
1
|
+
import { d as defineComponent, cm as resolveDirective, i as createElementBlock, g as openBlock, aA as withDirectives, k as createBaseVNode, t as toDisplayString, m as unref, c as useI18n, Q as useWorkflowsStore, H as useUIStore, dv as clearPopupWindowState, ag as useTelemetry, dw as parse, dx as hasTrimmedItem, p as useSettingsStore, a5 as useWorkflowHelpers, ak as WORKFLOW_SETTINGS_MODAL_KEY, a as useToast, dy as generateNodesGraph, aq as h, bz as useNodeTypesStore, dz as getTriggerNodeServiceName, bA as useNodeHelpers, dA as hasTrimmedData, aP as useExternalHooks, dB as codeNodeEditorEventBus, bR as useCredentialsStore, dC as useAssistantStore, dD as useSchemaPreviewStore, dE as makeRestApiRequest, O as defineStore, Z as useRootStore, P as usePushConnectionStore, r as ref } from "./index-B6eunbxp.js";
|
|
2
|
+
import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CLqHnasO.js";
|
|
3
|
+
import { g as globalLinkActionsEventBus } from "./global-link-actions-BvoZh8u9.js";
|
|
4
|
+
const _hoisted_1 = { "data-test-id": "sanitized-error-message" };
|
|
5
|
+
const _hoisted_2 = ["data-action-parameter-node"];
|
|
6
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
|
+
__name: "NodeExecutionErrorMessage",
|
|
8
|
+
props: {
|
|
9
|
+
nodeName: {},
|
|
10
|
+
errorMessage: {}
|
|
11
|
+
},
|
|
12
|
+
setup(__props) {
|
|
13
|
+
const i18n = useI18n();
|
|
14
|
+
return (_ctx, _cache) => {
|
|
15
|
+
const _directive_n8n_html = resolveDirective("n8n-html");
|
|
16
|
+
return openBlock(), createElementBlock("div", null, [
|
|
17
|
+
withDirectives(createBaseVNode("span", _hoisted_1, null, 512), [
|
|
18
|
+
[_directive_n8n_html, _ctx.errorMessage]
|
|
19
|
+
]),
|
|
20
|
+
_cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)),
|
|
21
|
+
createBaseVNode("a", {
|
|
22
|
+
"data-action": "openNodeDetail",
|
|
23
|
+
"data-action-parameter-node": _ctx.nodeName
|
|
24
|
+
}, toDisplayString(unref(i18n).baseText("node.executionError.openNode")), 9, _hoisted_2)
|
|
25
|
+
]);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
async function executionFinished({ data }, options) {
|
|
30
|
+
const workflowsStore = useWorkflowsStore();
|
|
31
|
+
const uiStore = useUIStore();
|
|
32
|
+
if (typeof workflowsStore.activeExecutionId === "undefined") {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const telemetry = useTelemetry();
|
|
36
|
+
clearPopupWindowState();
|
|
37
|
+
const workflow = workflowsStore.getWorkflowById(data.workflowId);
|
|
38
|
+
if (workflow?.meta?.templateId) {
|
|
39
|
+
const easyAiWorkflowJson = getEasyAiWorkflowJson();
|
|
40
|
+
const isEasyAIWorkflow = workflow.meta.templateId === easyAiWorkflowJson.meta.templateId;
|
|
41
|
+
if (isEasyAIWorkflow) {
|
|
42
|
+
telemetry.track(
|
|
43
|
+
"User executed test AI workflow",
|
|
44
|
+
{
|
|
45
|
+
status: data.status
|
|
46
|
+
},
|
|
47
|
+
{ withPostHog: true }
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
uiStore.setProcessingExecutionResults(true);
|
|
52
|
+
let successToastAlreadyShown = false;
|
|
53
|
+
let execution;
|
|
54
|
+
if (data.rawData) {
|
|
55
|
+
const { workflowId, status, rawData } = data;
|
|
56
|
+
execution = {
|
|
57
|
+
workflowId,
|
|
58
|
+
workflowData: workflowsStore.workflow,
|
|
59
|
+
data: parse(rawData),
|
|
60
|
+
status,
|
|
61
|
+
startedAt: workflowsStore.workflowExecutionData?.startedAt ?? /* @__PURE__ */ new Date(),
|
|
62
|
+
stoppedAt: /* @__PURE__ */ new Date()
|
|
63
|
+
};
|
|
64
|
+
} else {
|
|
65
|
+
if (data.status === "success") {
|
|
66
|
+
handleExecutionFinishedSuccessfully(data.workflowId, options);
|
|
67
|
+
successToastAlreadyShown = true;
|
|
68
|
+
}
|
|
69
|
+
execution = await fetchExecutionData(data.executionId);
|
|
70
|
+
if (!execution) {
|
|
71
|
+
uiStore.setProcessingExecutionResults(false);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const runExecutionData = getRunExecutionData(execution);
|
|
76
|
+
uiStore.setProcessingExecutionResults(false);
|
|
77
|
+
if (execution.data?.waitTill !== void 0) {
|
|
78
|
+
handleExecutionFinishedWithWaitTill(options);
|
|
79
|
+
} else if (execution.status === "error" || execution.status === "canceled") {
|
|
80
|
+
handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData, options);
|
|
81
|
+
} else {
|
|
82
|
+
handleExecutionFinishedWithOther(successToastAlreadyShown, options);
|
|
83
|
+
}
|
|
84
|
+
setRunExecutionData(execution, runExecutionData);
|
|
85
|
+
}
|
|
86
|
+
async function fetchExecutionData(executionId) {
|
|
87
|
+
const workflowsStore = useWorkflowsStore();
|
|
88
|
+
try {
|
|
89
|
+
const executionResponse = await workflowsStore.fetchExecutionDataById(executionId);
|
|
90
|
+
if (!executionResponse?.data) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
workflowId: executionResponse.workflowId,
|
|
95
|
+
workflowData: workflowsStore.workflow,
|
|
96
|
+
data: parse(executionResponse.data),
|
|
97
|
+
status: executionResponse.status,
|
|
98
|
+
startedAt: workflowsStore.workflowExecutionData?.startedAt,
|
|
99
|
+
stoppedAt: /* @__PURE__ */ new Date()
|
|
100
|
+
};
|
|
101
|
+
} catch {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function getRunExecutionData(execution) {
|
|
106
|
+
const workflowsStore = useWorkflowsStore();
|
|
107
|
+
const runExecutionData = {
|
|
108
|
+
startData: execution.data?.startData,
|
|
109
|
+
resultData: execution.data?.resultData ?? { runData: {} },
|
|
110
|
+
executionData: execution.data?.executionData
|
|
111
|
+
};
|
|
112
|
+
if (workflowsStore.workflowExecutionData?.workflowId === execution.workflowId) {
|
|
113
|
+
const activeRunData = workflowsStore.workflowExecutionData?.data?.resultData?.runData;
|
|
114
|
+
if (activeRunData) {
|
|
115
|
+
for (const key of Object.keys(activeRunData)) {
|
|
116
|
+
if (hasTrimmedItem(activeRunData[key])) continue;
|
|
117
|
+
runExecutionData.resultData.runData[key] = activeRunData[key];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return runExecutionData;
|
|
122
|
+
}
|
|
123
|
+
function getExecutionError(execution) {
|
|
124
|
+
const error = execution.data?.resultData.error;
|
|
125
|
+
const i18n = useI18n();
|
|
126
|
+
let errorMessage;
|
|
127
|
+
if (execution.data?.resultData.lastNodeExecuted && error) {
|
|
128
|
+
errorMessage = error.message ?? error.description ?? "";
|
|
129
|
+
} else {
|
|
130
|
+
errorMessage = i18n.baseText("pushConnection.executionError", {
|
|
131
|
+
interpolate: { error: "!" }
|
|
132
|
+
});
|
|
133
|
+
if (error?.message) {
|
|
134
|
+
let nodeName;
|
|
135
|
+
if ("node" in error) {
|
|
136
|
+
nodeName = typeof error.node === "string" ? error.node : error.node.name;
|
|
137
|
+
}
|
|
138
|
+
const receivedError = nodeName ? `${nodeName}: ${error.message}` : error.message;
|
|
139
|
+
errorMessage = i18n.baseText("pushConnection.executionError", {
|
|
140
|
+
interpolate: {
|
|
141
|
+
error: `.${i18n.baseText("pushConnection.executionError.details", {
|
|
142
|
+
interpolate: {
|
|
143
|
+
details: receivedError
|
|
144
|
+
}
|
|
145
|
+
})}`
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return errorMessage;
|
|
151
|
+
}
|
|
152
|
+
function getRunDataExecutedErrorMessage(execution) {
|
|
153
|
+
const i18n = useI18n();
|
|
154
|
+
if (execution.status === "crashed") {
|
|
155
|
+
return i18n.baseText("pushConnection.executionFailed.message");
|
|
156
|
+
} else if (execution.status === "canceled") {
|
|
157
|
+
const workflowsStore = useWorkflowsStore();
|
|
158
|
+
return i18n.baseText("executionsList.showMessage.stopExecution.message", {
|
|
159
|
+
interpolate: { activeExecutionId: workflowsStore.activeExecutionId ?? "" }
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return getExecutionError(execution);
|
|
163
|
+
}
|
|
164
|
+
function handleExecutionFinishedWithWaitTill(options) {
|
|
165
|
+
const workflowsStore = useWorkflowsStore();
|
|
166
|
+
const settingsStore = useSettingsStore();
|
|
167
|
+
const workflowHelpers = useWorkflowHelpers(options);
|
|
168
|
+
const workflowObject = workflowsStore.getCurrentWorkflow();
|
|
169
|
+
const workflowSettings = workflowsStore.workflowSettings;
|
|
170
|
+
const saveManualExecutions = workflowSettings.saveManualExecutions ?? settingsStore.saveManualExecutions;
|
|
171
|
+
if (!saveManualExecutions) {
|
|
172
|
+
const uiStore = useUIStore();
|
|
173
|
+
globalLinkActionsEventBus.emit("registerGlobalLinkAction", {
|
|
174
|
+
key: "open-settings",
|
|
175
|
+
action: async () => {
|
|
176
|
+
if (workflowsStore.isNewWorkflow) await workflowHelpers.saveAsNewWorkflow();
|
|
177
|
+
uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
workflowHelpers.setDocumentTitle(workflowObject.name, "IDLE");
|
|
182
|
+
}
|
|
183
|
+
function handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData, options) {
|
|
184
|
+
const toast = useToast();
|
|
185
|
+
const i18n = useI18n();
|
|
186
|
+
const telemetry = useTelemetry();
|
|
187
|
+
const workflowsStore = useWorkflowsStore();
|
|
188
|
+
const workflowHelpers = useWorkflowHelpers(options);
|
|
189
|
+
const workflowObject = workflowsStore.getCurrentWorkflow();
|
|
190
|
+
const runDataExecutedErrorMessage = getRunDataExecutedErrorMessage(execution);
|
|
191
|
+
workflowHelpers.setDocumentTitle(workflowObject.name, "ERROR");
|
|
192
|
+
if (runExecutionData.resultData.error?.name === "ExpressionError" && runExecutionData.resultData.error.functionality === "pairedItem") {
|
|
193
|
+
const error = runExecutionData.resultData.error;
|
|
194
|
+
void workflowHelpers.getWorkflowDataToSave().then((workflowData) => {
|
|
195
|
+
const eventData = {
|
|
196
|
+
caused_by_credential: false,
|
|
197
|
+
error_message: error.description,
|
|
198
|
+
error_title: error.message,
|
|
199
|
+
error_type: error.context.type,
|
|
200
|
+
node_graph_string: JSON.stringify(
|
|
201
|
+
generateNodesGraph(
|
|
202
|
+
workflowData,
|
|
203
|
+
workflowHelpers.getNodeTypes()
|
|
204
|
+
).nodeGraph
|
|
205
|
+
),
|
|
206
|
+
workflow_id: workflowsStore.workflowId
|
|
207
|
+
};
|
|
208
|
+
if (error.context.nodeCause && ["paired_item_no_info", "paired_item_invalid_info"].includes(error.context.type)) {
|
|
209
|
+
const node = workflowObject.getNode(error.context.nodeCause);
|
|
210
|
+
if (node) {
|
|
211
|
+
eventData.is_pinned = !!workflowObject.getPinDataOfNode(node.name);
|
|
212
|
+
eventData.mode = node.parameters.mode;
|
|
213
|
+
eventData.node_type = node.type;
|
|
214
|
+
eventData.operation = node.parameters.operation;
|
|
215
|
+
eventData.resource = node.parameters.resource;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
telemetry.track("Instance FE emitted paired item error", eventData, {
|
|
219
|
+
withPostHog: true
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (runExecutionData.resultData.error?.name === "SubworkflowOperationError") {
|
|
224
|
+
const error = runExecutionData.resultData.error;
|
|
225
|
+
workflowsStore.subWorkflowExecutionError = error;
|
|
226
|
+
toast.showMessage({
|
|
227
|
+
title: error.message,
|
|
228
|
+
message: error.description,
|
|
229
|
+
type: "error",
|
|
230
|
+
duration: 0
|
|
231
|
+
});
|
|
232
|
+
} else if ((runExecutionData.resultData.error?.name === "NodeOperationError" || runExecutionData.resultData.error?.name === "NodeApiError") && runExecutionData.resultData.error.functionality === "configuration-node") {
|
|
233
|
+
let title;
|
|
234
|
+
const nodeError = runExecutionData.resultData.error;
|
|
235
|
+
if (nodeError.node.name) {
|
|
236
|
+
title = `Error in sub-node ‘${nodeError.node.name}‘`;
|
|
237
|
+
} else {
|
|
238
|
+
title = "Problem executing workflow";
|
|
239
|
+
}
|
|
240
|
+
toast.showMessage({
|
|
241
|
+
title,
|
|
242
|
+
message: h(_sfc_main, {
|
|
243
|
+
errorMessage: nodeError?.description ?? runDataExecutedErrorMessage,
|
|
244
|
+
nodeName: nodeError.node.name
|
|
245
|
+
}),
|
|
246
|
+
type: "error",
|
|
247
|
+
duration: 0
|
|
248
|
+
});
|
|
249
|
+
} else {
|
|
250
|
+
if (execution.status === "canceled") {
|
|
251
|
+
toast.showMessage({
|
|
252
|
+
title: i18n.baseText("nodeView.showMessage.stopExecutionTry.title"),
|
|
253
|
+
type: "success"
|
|
254
|
+
});
|
|
255
|
+
} else {
|
|
256
|
+
let title;
|
|
257
|
+
if (runExecutionData.resultData.lastNodeExecuted) {
|
|
258
|
+
title = `Problem in node ‘${runExecutionData.resultData.lastNodeExecuted}‘`;
|
|
259
|
+
} else {
|
|
260
|
+
title = "Problem executing workflow";
|
|
261
|
+
}
|
|
262
|
+
toast.showMessage({
|
|
263
|
+
title,
|
|
264
|
+
message: runDataExecutedErrorMessage,
|
|
265
|
+
type: "error",
|
|
266
|
+
duration: 0
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function handleExecutionFinishedSuccessfully(workflowId, options) {
|
|
272
|
+
const workflowsStore = useWorkflowsStore();
|
|
273
|
+
const workflowHelpers = useWorkflowHelpers(options);
|
|
274
|
+
const toast = useToast();
|
|
275
|
+
const i18n = useI18n();
|
|
276
|
+
workflowHelpers.setDocumentTitle(workflowsStore.getWorkflowById(workflowId)?.name, "IDLE");
|
|
277
|
+
workflowsStore.setActiveExecutionId(void 0);
|
|
278
|
+
toast.showMessage({
|
|
279
|
+
title: i18n.baseText("pushConnection.workflowExecutedSuccessfully"),
|
|
280
|
+
type: "success"
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function handleExecutionFinishedWithOther(successToastAlreadyShown, options) {
|
|
284
|
+
const workflowsStore = useWorkflowsStore();
|
|
285
|
+
const toast = useToast();
|
|
286
|
+
const i18n = useI18n();
|
|
287
|
+
const workflowHelpers = useWorkflowHelpers(options);
|
|
288
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
289
|
+
const workflowObject = workflowsStore.getCurrentWorkflow();
|
|
290
|
+
workflowHelpers.setDocumentTitle(workflowObject.name, "IDLE");
|
|
291
|
+
const workflowExecution = workflowsStore.getWorkflowExecution;
|
|
292
|
+
if (workflowExecution?.executedNode) {
|
|
293
|
+
const node = workflowsStore.getNodeByName(workflowExecution.executedNode);
|
|
294
|
+
const nodeType = node && nodeTypesStore.getNodeType(node.type, node.typeVersion);
|
|
295
|
+
const nodeOutput = workflowExecution?.executedNode && workflowExecution.data?.resultData?.runData?.[workflowExecution.executedNode];
|
|
296
|
+
if (nodeType?.polling && !nodeOutput) {
|
|
297
|
+
toast.showMessage({
|
|
298
|
+
title: i18n.baseText("pushConnection.pollingNode.dataNotFound", {
|
|
299
|
+
interpolate: {
|
|
300
|
+
service: getTriggerNodeServiceName(nodeType)
|
|
301
|
+
}
|
|
302
|
+
}),
|
|
303
|
+
message: i18n.baseText("pushConnection.pollingNode.dataNotFound.message", {
|
|
304
|
+
interpolate: {
|
|
305
|
+
service: getTriggerNodeServiceName(nodeType)
|
|
306
|
+
}
|
|
307
|
+
}),
|
|
308
|
+
type: "success"
|
|
309
|
+
});
|
|
310
|
+
} else {
|
|
311
|
+
toast.showMessage({
|
|
312
|
+
title: i18n.baseText("pushConnection.nodeExecutedSuccessfully"),
|
|
313
|
+
type: "success"
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
} else if (!successToastAlreadyShown) {
|
|
317
|
+
toast.showMessage({
|
|
318
|
+
title: i18n.baseText("pushConnection.workflowExecutedSuccessfully"),
|
|
319
|
+
type: "success"
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function setRunExecutionData(execution, runExecutionData, normalize = true) {
|
|
324
|
+
const workflowsStore = useWorkflowsStore();
|
|
325
|
+
const nodeHelpers = useNodeHelpers();
|
|
326
|
+
const runDataExecutedErrorMessage = getRunDataExecutedErrorMessage(execution);
|
|
327
|
+
const workflowExecution = workflowsStore.getWorkflowExecution;
|
|
328
|
+
if (workflowsStore.getWorkflowRunData && !hasTrimmedData(workflowsStore.getWorkflowRunData)) {
|
|
329
|
+
runExecutionData.resultData.runData = workflowsStore.getWorkflowRunData;
|
|
330
|
+
}
|
|
331
|
+
workflowsStore.executingNode.length = 0;
|
|
332
|
+
if (normalize) {
|
|
333
|
+
removeRunningTaskData(execution);
|
|
334
|
+
}
|
|
335
|
+
workflowsStore.setWorkflowExecutionData(workflowExecution);
|
|
336
|
+
workflowsStore.setWorkflowExecutionRunData(runExecutionData);
|
|
337
|
+
workflowsStore.setActiveExecutionId(void 0);
|
|
338
|
+
nodeHelpers.updateNodesExecutionIssues();
|
|
339
|
+
const lastNodeExecuted = runExecutionData.resultData.lastNodeExecuted;
|
|
340
|
+
let itemsCount = 0;
|
|
341
|
+
if (lastNodeExecuted && runExecutionData.resultData.runData[lastNodeExecuted] && !runDataExecutedErrorMessage) {
|
|
342
|
+
itemsCount = runExecutionData.resultData.runData[lastNodeExecuted][0].data?.main[0]?.length ?? 0;
|
|
343
|
+
}
|
|
344
|
+
workflowsStore.setActiveExecutionId(void 0);
|
|
345
|
+
void useExternalHooks().run("pushConnection.executionFinished", {
|
|
346
|
+
itemsCount,
|
|
347
|
+
nodeName: runExecutionData.resultData.lastNodeExecuted,
|
|
348
|
+
errorMessage: runDataExecutedErrorMessage,
|
|
349
|
+
runDataExecutedStartData: runExecutionData.startData,
|
|
350
|
+
resultDataError: runExecutionData.resultData.error
|
|
351
|
+
});
|
|
352
|
+
const lineNumber = runExecutionData.resultData?.error?.lineNumber;
|
|
353
|
+
codeNodeEditorEventBus.emit("highlightLine", lineNumber ?? "last");
|
|
354
|
+
}
|
|
355
|
+
function removeRunningTaskData(execution) {
|
|
356
|
+
if (execution.data) {
|
|
357
|
+
execution.data = {
|
|
358
|
+
...execution.data,
|
|
359
|
+
resultData: {
|
|
360
|
+
...execution.data.resultData,
|
|
361
|
+
runData: Object.fromEntries(
|
|
362
|
+
Object.entries(execution.data.resultData.runData).map(([nodeName, runs]) => [
|
|
363
|
+
nodeName,
|
|
364
|
+
runs.filter((run) => run.executionStatus !== "running")
|
|
365
|
+
]).filter(([, runs]) => runs.length > 0)
|
|
366
|
+
)
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
async function executionRecovered({ data }, options) {
|
|
372
|
+
const workflowsStore = useWorkflowsStore();
|
|
373
|
+
const uiStore = useUIStore();
|
|
374
|
+
if (typeof workflowsStore.activeExecutionId === "undefined") {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
uiStore.setProcessingExecutionResults(true);
|
|
378
|
+
const execution = await fetchExecutionData(data.executionId);
|
|
379
|
+
if (!execution) {
|
|
380
|
+
uiStore.setProcessingExecutionResults(false);
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const runExecutionData = getRunExecutionData(execution);
|
|
384
|
+
uiStore.setProcessingExecutionResults(false);
|
|
385
|
+
if (execution.data?.waitTill !== void 0) {
|
|
386
|
+
handleExecutionFinishedWithWaitTill(options);
|
|
387
|
+
} else if (execution.status === "error" || execution.status === "canceled") {
|
|
388
|
+
handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData, options);
|
|
389
|
+
} else {
|
|
390
|
+
handleExecutionFinishedWithOther(false, options);
|
|
391
|
+
}
|
|
392
|
+
setRunExecutionData(execution, runExecutionData, false);
|
|
393
|
+
}
|
|
394
|
+
async function executionStarted({ data }) {
|
|
395
|
+
const workflowsStore = useWorkflowsStore();
|
|
396
|
+
if (typeof workflowsStore.activeExecutionId === "undefined") {
|
|
397
|
+
return;
|
|
398
|
+
} else if (workflowsStore.activeExecutionId === null) {
|
|
399
|
+
workflowsStore.setActiveExecutionId(data.executionId);
|
|
400
|
+
}
|
|
401
|
+
if (workflowsStore.workflowExecutionData?.data && data.flattedRunData) {
|
|
402
|
+
workflowsStore.workflowExecutionData.data.resultData.runData = parse(data.flattedRunData);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
async function nodeDescriptionUpdated(_event) {
|
|
406
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
407
|
+
const credentialsStore = useCredentialsStore();
|
|
408
|
+
await nodeTypesStore.getNodeTypes();
|
|
409
|
+
await credentialsStore.fetchCredentialTypes(true);
|
|
410
|
+
}
|
|
411
|
+
async function nodeExecuteAfter({ data: pushData }) {
|
|
412
|
+
const workflowsStore = useWorkflowsStore();
|
|
413
|
+
const assistantStore = useAssistantStore();
|
|
414
|
+
const schemaPreviewStore = useSchemaPreviewStore();
|
|
415
|
+
if (pushData.itemCount && pushData.data?.data?.main && Array.isArray(pushData.data.data.main[0]) && pushData.data.data.main[0].length < pushData.itemCount) {
|
|
416
|
+
pushData.data.data.main[0]?.push(...new Array(pushData.itemCount - 1).fill({ json: {} }));
|
|
417
|
+
}
|
|
418
|
+
workflowsStore.updateNodeExecutionData(pushData);
|
|
419
|
+
setTimeout(() => {
|
|
420
|
+
workflowsStore.removeExecutingNode(pushData.nodeName);
|
|
421
|
+
}, 50);
|
|
422
|
+
void assistantStore.onNodeExecution(pushData);
|
|
423
|
+
void schemaPreviewStore.trackSchemaPreviewExecution(pushData);
|
|
424
|
+
}
|
|
425
|
+
async function nodeExecuteBefore({ data }) {
|
|
426
|
+
const workflowsStore = useWorkflowsStore();
|
|
427
|
+
workflowsStore.addExecutingNode(data.nodeName);
|
|
428
|
+
workflowsStore.addNodeExecutionData(data);
|
|
429
|
+
}
|
|
430
|
+
async function reloadNodeType({ data }) {
|
|
431
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
432
|
+
await nodeTypesStore.getNodeTypes();
|
|
433
|
+
await nodeTypesStore.getFullNodesProperties([data]);
|
|
434
|
+
}
|
|
435
|
+
async function removeNodeType({ data }) {
|
|
436
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
437
|
+
const credentialsStore = useCredentialsStore();
|
|
438
|
+
const nodesToBeRemoved = [data];
|
|
439
|
+
await credentialsStore.fetchCredentialTypes(false).then(() => {
|
|
440
|
+
nodeTypesStore.removeNodeTypes(nodesToBeRemoved);
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
async function sendConsoleMessage({ data }) {
|
|
444
|
+
console.log(data.source, ...data.messages);
|
|
445
|
+
}
|
|
446
|
+
const GET_STATUS_ENDPOINT = "/orchestration/worker/status";
|
|
447
|
+
const sendGetWorkerStatus = async (context) => {
|
|
448
|
+
await makeRestApiRequest(context, "POST", GET_STATUS_ENDPOINT);
|
|
449
|
+
};
|
|
450
|
+
const WORKER_HISTORY_LENGTH = 100;
|
|
451
|
+
const STALE_SECONDS = 120 * 1e3;
|
|
452
|
+
const useOrchestrationStore = defineStore("orchestrationManager", {
|
|
453
|
+
state: () => ({
|
|
454
|
+
initialStatusReceived: false,
|
|
455
|
+
workers: {},
|
|
456
|
+
workersHistory: {},
|
|
457
|
+
workersLastUpdated: {},
|
|
458
|
+
statusInterval: null
|
|
459
|
+
}),
|
|
460
|
+
actions: {
|
|
461
|
+
updateWorkerStatus(data) {
|
|
462
|
+
this.workers[data.senderId] = data;
|
|
463
|
+
if (!this.workersHistory[data.senderId]) {
|
|
464
|
+
this.workersHistory[data.senderId] = [];
|
|
465
|
+
}
|
|
466
|
+
this.workersHistory[data.senderId].push({ data, timestamp: Date.now() });
|
|
467
|
+
if (this.workersHistory[data.senderId].length > WORKER_HISTORY_LENGTH) {
|
|
468
|
+
this.workersHistory[data.senderId].shift();
|
|
469
|
+
}
|
|
470
|
+
this.workersLastUpdated[data.senderId] = Date.now();
|
|
471
|
+
this.initialStatusReceived = true;
|
|
472
|
+
},
|
|
473
|
+
removeStaleWorkers() {
|
|
474
|
+
for (const id in this.workersLastUpdated) {
|
|
475
|
+
if (this.workersLastUpdated[id] + STALE_SECONDS < Date.now()) {
|
|
476
|
+
delete this.workers[id];
|
|
477
|
+
delete this.workersHistory[id];
|
|
478
|
+
delete this.workersLastUpdated[id];
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
startWorkerStatusPolling() {
|
|
483
|
+
const rootStore = useRootStore();
|
|
484
|
+
if (!this.statusInterval) {
|
|
485
|
+
this.statusInterval = setInterval(async () => {
|
|
486
|
+
await sendGetWorkerStatus(rootStore.restApiContext);
|
|
487
|
+
this.removeStaleWorkers();
|
|
488
|
+
}, 1e3);
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
stopWorkerStatusPolling() {
|
|
492
|
+
if (this.statusInterval) {
|
|
493
|
+
clearInterval(this.statusInterval);
|
|
494
|
+
this.statusInterval = null;
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
getWorkerLastUpdated(workerId) {
|
|
498
|
+
return this.workersLastUpdated[workerId] ?? 0;
|
|
499
|
+
},
|
|
500
|
+
getWorkerStatus(workerId) {
|
|
501
|
+
return this.workers[workerId];
|
|
502
|
+
},
|
|
503
|
+
getWorkerStatusHistory(workerId) {
|
|
504
|
+
return this.workersHistory[workerId] ?? [];
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
async function sendWorkerStatusMessage({ data }) {
|
|
509
|
+
const orchestrationStore = useOrchestrationStore();
|
|
510
|
+
orchestrationStore.updateWorkerStatus(data.status);
|
|
511
|
+
}
|
|
512
|
+
async function testWebhookDeleted({ data }) {
|
|
513
|
+
const workflowsStore = useWorkflowsStore();
|
|
514
|
+
if (data.workflowId === workflowsStore.workflowId) {
|
|
515
|
+
workflowsStore.executionWaitingForWebhook = false;
|
|
516
|
+
workflowsStore.setActiveExecutionId(void 0);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
async function testWebhookReceived({ data }) {
|
|
520
|
+
const workflowsStore = useWorkflowsStore();
|
|
521
|
+
if (data.workflowId === workflowsStore.workflowId) {
|
|
522
|
+
workflowsStore.executionWaitingForWebhook = false;
|
|
523
|
+
workflowsStore.setActiveExecutionId(data.executionId ?? null);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
async function workflowActivated({ data }) {
|
|
527
|
+
const workflowsStore = useWorkflowsStore();
|
|
528
|
+
workflowsStore.setWorkflowActive(data.workflowId);
|
|
529
|
+
}
|
|
530
|
+
async function workflowDeactivated({ data }) {
|
|
531
|
+
const workflowsStore = useWorkflowsStore();
|
|
532
|
+
workflowsStore.setWorkflowInactive(data.workflowId);
|
|
533
|
+
}
|
|
534
|
+
async function workflowFailedToActivate({ data }) {
|
|
535
|
+
const workflowsStore = useWorkflowsStore();
|
|
536
|
+
if (workflowsStore.workflowId !== data.workflowId) {
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
workflowsStore.setWorkflowInactive(data.workflowId);
|
|
540
|
+
workflowsStore.setActive(false);
|
|
541
|
+
const toast = useToast();
|
|
542
|
+
const i18n = useI18n();
|
|
543
|
+
toast.showError(
|
|
544
|
+
new Error(data.errorMessage),
|
|
545
|
+
i18n.baseText("workflowActivator.showError.title", {
|
|
546
|
+
interpolate: { newStateName: "activated" }
|
|
547
|
+
}) + ":"
|
|
548
|
+
);
|
|
549
|
+
}
|
|
550
|
+
function createEventQueue(processEvent) {
|
|
551
|
+
const queue = [];
|
|
552
|
+
let processing = false;
|
|
553
|
+
async function processNext() {
|
|
554
|
+
if (processing || queue.length === 0) {
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
processing = true;
|
|
558
|
+
const currentEvent = queue.shift();
|
|
559
|
+
if (currentEvent !== void 0) {
|
|
560
|
+
try {
|
|
561
|
+
await processEvent(currentEvent);
|
|
562
|
+
} catch (error) {
|
|
563
|
+
console.error("Error processing event:", error);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
processing = false;
|
|
567
|
+
await processNext();
|
|
568
|
+
}
|
|
569
|
+
function enqueue(event) {
|
|
570
|
+
queue.push(event);
|
|
571
|
+
void processNext();
|
|
572
|
+
}
|
|
573
|
+
return { enqueue };
|
|
574
|
+
}
|
|
575
|
+
function usePushConnection(options) {
|
|
576
|
+
const pushStore = usePushConnectionStore();
|
|
577
|
+
const { enqueue } = createEventQueue(processEvent);
|
|
578
|
+
const removeEventListener = ref(null);
|
|
579
|
+
function initialize() {
|
|
580
|
+
removeEventListener.value = pushStore.addEventListener((message) => {
|
|
581
|
+
enqueue(message);
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
function terminate() {
|
|
585
|
+
if (typeof removeEventListener.value === "function") {
|
|
586
|
+
removeEventListener.value();
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
async function processEvent(event) {
|
|
590
|
+
switch (event.type) {
|
|
591
|
+
case "testWebhookDeleted":
|
|
592
|
+
return await testWebhookDeleted(event);
|
|
593
|
+
case "testWebhookReceived":
|
|
594
|
+
return await testWebhookReceived(event);
|
|
595
|
+
case "reloadNodeType":
|
|
596
|
+
return await reloadNodeType(event);
|
|
597
|
+
case "removeNodeType":
|
|
598
|
+
return await removeNodeType(event);
|
|
599
|
+
case "nodeDescriptionUpdated":
|
|
600
|
+
return await nodeDescriptionUpdated();
|
|
601
|
+
case "nodeExecuteBefore":
|
|
602
|
+
return await nodeExecuteBefore(event);
|
|
603
|
+
case "nodeExecuteAfter":
|
|
604
|
+
return await nodeExecuteAfter(event);
|
|
605
|
+
case "executionStarted":
|
|
606
|
+
return await executionStarted(event);
|
|
607
|
+
case "sendWorkerStatusMessage":
|
|
608
|
+
return await sendWorkerStatusMessage(event);
|
|
609
|
+
case "sendConsoleMessage":
|
|
610
|
+
return await sendConsoleMessage(event);
|
|
611
|
+
case "workflowFailedToActivate":
|
|
612
|
+
return await workflowFailedToActivate(event);
|
|
613
|
+
case "executionFinished":
|
|
614
|
+
return await executionFinished(event, options);
|
|
615
|
+
case "executionRecovered":
|
|
616
|
+
return await executionRecovered(event, options);
|
|
617
|
+
case "workflowActivated":
|
|
618
|
+
return await workflowActivated(event);
|
|
619
|
+
case "workflowDeactivated":
|
|
620
|
+
return await workflowDeactivated(event);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
return {
|
|
624
|
+
initialize,
|
|
625
|
+
terminate
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
export {
|
|
629
|
+
WORKER_HISTORY_LENGTH as W,
|
|
630
|
+
useOrchestrationStore as a,
|
|
631
|
+
usePushConnection as u
|
|
632
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { gM as useTestDefinitionStore, r as ref, q as computed } from "./index-B6eunbxp.js";
|
|
2
2
|
function useTestDefinitionForm() {
|
|
3
3
|
const evaluationsStore = useTestDefinitionStore();
|
|
4
4
|
const state = ref({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as ref, b as useRouter,
|
|
1
|
+
import { r as ref, b as useRouter, a5 as useWorkflowHelpers, Q as useWorkflowsStore, H as useUIStore, a as useToast, a3 as useNpsSurveyStore, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, ag as useTelemetry, aP as useExternalHooks, c as useI18n, aJ as useStorage, dL as LOCAL_STORAGE_ACTIVATION_FLAG, dM as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-B6eunbxp.js";
|
|
2
2
|
function useWorkflowActivate() {
|
|
3
3
|
const updatingWorkflowActivation = ref(false);
|
|
4
4
|
const router = useRouter();
|