UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 13.2 kB
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.13.4`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`f527bce6-4a0d-4d87-aab5-f588a56451b3`,e._sentryDebugIdIdentifier=`sentry-dbid-f527bce6-4a0d-4d87-aab5-f588a56451b3`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{Nt as t,S as n}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{M as r,bt as i}from"./_MapCache-CUJwh2qp.js";import{v as a}from"./src-wni2AGA3.js";import{$t as o,As as s,Dr as c,Et as l,Si as u,Ti as d,Tr as f,_i as p,bi as m,en as h,h as g,hi as _,in as v,r as y,s as b,va as x,vi as S,vn as C,wi as w,yi as T,yn as E}from"./users.store-BHWXXawf.js";import{Co as D,Fi as O,Gt as ee,Ht as te,Ii as k,N as A,Ut as j,Wt as M,ho as N,nr as P,pa as F,sa as I}from"./constants-CIP7tKq1.js";import{j as L,m as R,r as z}from"./_baseOrderBy-CaKruttV.js";import{t as B}from"./executions.store-CZbPSd3l.js";import{t as V}from"./useCanvasOperations-CI7Ylcwf.js";import{t as H}from"./retry-CLoylW83.js";import{t as ne}from"./pushConnection.store-L5aofOKN.js";var U=e=>e.toString().split(`.`).concat([`0`,`0`]).slice(0,3).join(`.`),W=e=>!!e&&typeof e==`object`&&`type`in e&&`properties`in e&&!x(e.properties);const G=async(e,t)=>{let{nodeType:n,version:r,resource:i,operation:a}=t,o=U(r),s=await R({method:`GET`,baseURL:e,endpoint:`${[`schemas`,n.replace(`@n8n/`,``),o,i,a].filter(Boolean).join(`/`)}.json`,withCredentials:!1});if(!W(s))throw Error(`Invalid JSON schema`);return s};function K(e){return J(e)}function q(e){return[`string`,`number`,`boolean`].includes(e)}function J(e){if(e===null)return{type:`null`};let t=typeof e;return q(t)?{type:t}:Array.isArray(e)?re(e):e&&t===`object`?ie(e):{type:`string`}}function re(e){return{type:`array`,items:e.length>0?J(e[0]):{}}}function ie(e){let t={};return Object.entries(e).forEach(([e,n])=>{t[e]=J(n)}),{type:`object`,properties:t}}const ae=L(`schemaPreview`,()=>{let e=t(new Map),n=z(),r=h(),i=b();function a({nodeType:e,version:t,operation:n,resource:r}){return`${e}_${t}_${r?.toString()??`all`}_${n?.toString()??`all`}`}async function o(t){let r=a(t),i=e.get(r);if(i)return i;try{let i=k(await G(n.baseUrl,t));return e.set(r,i),i}catch(t){let n=O(t);return e.set(r,n),n}}async function s(t){if(e.size===0||t.data.executionStatus!==`success`)return;let n=i.getNodeByName(t.nodeName);if(!n)return;let{id:o,type:s,typeVersion:c,parameters:{resource:l,operation:u}}=n,d=e.get(a({nodeType:s,version:c,resource:l,operation:u}));d?.ok&&r.track(`User executed node with schema preview`,{node_id:o,node_type:s,node_version:c,node_resource:l,node_operation:u,schema_preview:JSON.stringify(d.result),output_schema:JSON.stringify(K(t.data.data?.main?.[0]?.[0]?.json)),workflow_id:i.workflowId})}return{getSchemaPreview:o,trackSchemaPreviewExecution:s}});function Y(e,t,n,r,i){if(e instanceof m)return e.commands.some(n=>Y(n,t,e.commands,r,i));if(e instanceof S)return e.connectionData[1]?.node===t;if(e instanceof w){let[r,i]=e.connectionData;return i.node===t?n.some(e=>e instanceof d&&e.node.name===r.node):!1}let a=Object.values(r(t)).flat().flat().filter(e=>e!==null).map(e=>e.node);return e instanceof T?a.includes(e.node.name):e instanceof u?a.includes(e.nodeName)&&(e.newState||Object.keys(i(e.nodeName)).some(e=>e!==N.Main)):!1}function X(e,t,n){let r=t.indexOf(e);if(r>=0)return t.slice(r);let i=[...t,e];for(let[t,r]of Object.entries(n(e)))if(t===N.Main)for(let e of r)for(let{node:t}of e??[]){let e=X(t,i,n);if(e)return e}}function Z(){let e=p(),t=b();function r(e){return Object.entries(t.incomingConnectionsByNodeName(e)).filter(([e])=>e!==N.Main).flatMap(([,e])=>e.flat().filter(e=>e!==null))}function i(e,n){if((t.getParametersLastUpdate(e)??0)>n)return _.PARAMETERS_UPDATED;for(let t of r(e))if(i(t.node,n)!==void 0)return _.UPSTREAM_DIRTY}function a(n,i){for(let r=e.undoStack.length-1;r>=0;r--){let a=e.undoStack[r];if(a.getTimestamp()<i)break;if(Y(a,n,[],t.incomingConnectionsByNodeName,t.outgoingConnectionsByNodeName))return _.INCOMING_CONNECTIONS_UPDATED}for(let e of r(n))if(a(e.node,i)!==void 0)return _.UPSTREAM_DIRTY}let o=n(()=>{let e={};function n(r,i,a){if(a.has(r))return;let o=new Set(a);o.add(r);for(let[a,s]of Object.entries(t.outgoingConnectionsByNodeName(r)))if(a===N.Main)for(let t of s)for(let{node:r}of t??[])(!e[r]||e[r]>i)&&(e[r]=i),n(r,i+1,o)}for(let r of t.allNodes)Object.keys(t.incomingConnectionsByNodeName(r.name)).length>0||(e[r.name]=0,n(r.name,1,new Set));return e});return{dirtinessByName:n(()=>{let e={},n=t.getWorkflowRunData??{};function r(n,r){e[n]=e[n]??r;let i=X(n,[],t.incomingConnectionsByNodeName);if(!i)return;let a=[...i].sort((e,t)=>(o.value[e]??2**53-1)-(o.value[t]??2**53-1))?.[0];a&&o.value[a]&&(e[a]=e[a]??_.UPSTREAM_DIRTY)}for(let[e,o]of Object.entries(n)){let n=o[0]?.startTime??0;if(!n)continue;let s=i(e,n);if(s){r(e,s);continue}let c=a(e,n);if(c){r(e,c);continue}if(Object.values(t.incomingConnectionsByNodeName(e)).flat().flat().filter(e=>e!==null).some(e=>(t.getPinnedDataLastUpdate(e.node)??0)>n)){r(e,_.PINNED_DATA_UPDATED);continue}if((t.getPinnedDataLastRemovedAt(e)??0)>n){r(e,_.PINNED_DATA_UPDATED);continue}}return e})}}var oe=`N8N_AGENT_REQUESTS`;const Q=L(`agentRequest`,()=>{let e=r(oe,{}),t=(t,n)=>{e.value[t]||(e.value[t]={}),e.value[t][n]||(e.value[t][n]={query:{}})};return{agentRequests:e,getAgentRequests:(t,n)=>e.value[t]?.[n]?.query||{},getQueryValue:(t,n,r,i)=>{let a=e.value[t]?.[n]?.query?.[r];return typeof a==`string`||!i?a:a?.[i]},setAgentRequestForNode:(n,r,i)=>{t(n,r),e.value[n][r]={...i,query:{...i.query}}},clearAgentRequests:(t,n)=>{e.value[t]&&(e.value[t][n]={query:{}})},clearAllAgentRequests:t=>{t?e.value[t]={}:e.value={}},getAgentRequest:(t,n)=>{if(e.value[t])return e.value[t]?.[n]}}});var $=e(a(),1);function se(e){let t=l(),r=i(),a=f(),u=h(),d=c(),p=s(),m=y(),_=Q(),S=z(),w=ne(),T=b(),D=e.workflowState??v(),O=o({workflowState:D}),te=E({router:e.router,workflowState:D}),k=B(),{dirtinessByName:j}=Z(),{startChat:M}=V(),P=n(()=>T.workflowObject);function L(e){return[...e].sort((e,t)=>{let n=T.getNodeByName(e)?.position??[0,0],r=T.getNodeByName(t)?.position??[0,0],i=n[1],a=r[1];return i===a?0:i>a?1:-1})}async function R(e){if(!w.isConnected)throw Error(r.baseText(`workflowRun.noActiveConnectionToTheServer`));D.setActiveExecutionId(null);let t;try{t=await T.runWorkflow(e)}catch(e){throw D.setActiveExecutionId(void 0),e}let n=T.previousExecutionId!==t.executionId,i=T.activeExecutionId===null;return t.executionId&&n&&i&&D.setActiveExecutionId(t.executionId),t.waitingForWebhook===!0&&(T.executionWaitingForWebhook=!0),t}async function U(e){if(!T.activeExecutionId){a.clearAllStickyNotifications();try{let n=[];e.destinationNode!==void 0&&(n=P.value.getParentNodes(e.destinationNode.nodeName,N.Main,-1));let i=T.getWorkflowRunData;(m.stateIsDirty||!T.isWorkflowSaved[T.workflowId])&&await te.saveCurrentWorkflow();let o=await t.getWorkflowDataToSave();if(S.binaryDataMode===`default`&&o.settings?.binaryMode===`combined`){a.showMessage({title:r.baseText(`workflowRun.showError.unsupportedExecutionLogic.title`),message:r.baseText(`workflowRun.showError.unsupportedExecutionLogic.description`),type:`error`});return}let{startNodeNames:s}=W(n,i,o.pinData,P.value),c=e.destinationNode?T.getNodeByName(e.destinationNode.nodeName)?.type:``,l,u;if(s.length===0&&n.length===0&&`destinationNode`in e&&e.destinationNode!==void 0?(l=e.destinationNode.nodeName,s.push(e.destinationNode.nodeName)):e.triggerNode&&e.nodeData&&!e.rerunTriggerNode?s.push(...P.value.getChildNodes(e.triggerNode,N.Main,1)):e.destinationNode&&(l=e.destinationNode.nodeName),e.triggerNode&&(u={name:e.triggerNode,data:e.nodeData}),e.destinationNode&&(T.checkIfNodeHasChatParent(e.destinationNode.nodeName)||c===`@n8n/n8n-nodes-langchain.chatTrigger`)&&e.source!==`RunData.ManualChatMessage`&&e.source!==`RunData.ManualChatTrigger`){let t=P.value.getStartNode(e.destinationNode.nodeName);if(t&&t.type===`@n8n/n8n-nodes-langchain.chatTrigger`){let n=O.getNodeInputData(t,0,0,`input`)?.length>0,r=!!o.pinData?.[t.name];if(!n&&!r){T.chatPartialExecutionDestinationNode=e.destinationNode.nodeName,M();return}}}let f=o.nodes.filter(e=>!e.disabled&&e.type.toLowerCase().includes(`trigger`)),p=f.find(e=>e.type===ee),h=p?.parameters?.options;e.triggerNode===p?.name&&h?.responseMode===`responseNodes`&&(o.nodes.filter(e=>!e.disabled&&(e.type===`@n8n/n8n-nodes-langchain.chat`||e.type===`@n8n/n8n-nodes-langchain.chatTool`||e.type===`@n8n/n8n-nodes-langchain.chatHitlTool`||e.type===`n8n-nodes-base.respondToWebhook`))?.length||a.showMessage({title:r.baseText(`workflowRun.showWarning.noChatResponseNodes.title`),message:r.baseText(`workflowRun.showWarning.noChatResponseNodes.description`),type:`warning`})),!e.destinationNode&&e.source!==`RunData.ManualChatMessage`&&p&&f.filter(e=>e.type!==`@n8n/n8n-nodes-langchain.chatTrigger`).length&&(p.disabled=!0);let v=e.destinationNode!==void 0,y=L(s).map(e=>{let n=(0,$.default)(i,[e,0,`source`,0],null);if(n===null){let r=P.value.getParentNodes(e,N.Main,1);n=(0,$.default)(t.executeData(P.value.connectionsBySourceNode,r,e,N.Main,0),[`source`,N.Main,0],null)}return{name:e,sourceData:n}}).filter(t=>e.destinationNode&&T.checkIfNodeHasChatParent(e.destinationNode.nodeName)?t.name!==e.destinationNode.nodeName:!0),b={workflowId:o.id,runData:v?i??void 0:void 0,startNodes:y,triggerToStartFrom:u,chatSessionId:e.sessionId};if(`destinationNode`in e){b.destinationNode=e.destinationNode;let t=T.getNodeByName(e.destinationNode?.nodeName??``)?.id;if(P.value.id&&t){let e=_.getAgentRequest(P.value.id,t);e&&(b.agentRequest={query:e.query??{},tool:{name:e.toolName??``}})}}if(b.runData){let e=Object.entries(j.value).flatMap(([e,t])=>t?[e]:[]);b.dirtyNodeNames=e.length>0?e:void 0}let x={id:A,finished:!1,mode:`manual`,status:`running`,createdAt:new Date,startedAt:new Date,stoppedAt:void 0,workflowId:P.value.id,executedNode:l,triggerNode:u?.name,data:I({resultData:{runData:b.runData??{},pinData:o.pinData}}),workflowData:{id:T.workflowId,name:o.name,active:o.active,createdAt:0,updatedAt:0,...o}};D.setWorkflowExecutionData(x),O.updateNodesExecutionIssues(),C().setDocumentTitle(P.value.name,`EXECUTING`);let w=await R(b),E=o.pinData??{},k=(()=>e=>{let t=e.parameters.path||e.parameters.options?.path||e.webhookId;return`${S.formTestUrl}/${t}`})();try{await g({nodes:o.nodes,runData:T.getWorkflowExecution?.data?.resultData?.runData,destinationNode:e.destinationNode?.nodeName,triggerNode:e.triggerNode,pinData:E,directParentNodes:n,source:e.source,getTestUrl:k})}catch{}return await d.run(`workflowRun.runWorkflow`,{nodeName:e.destinationNode?.nodeName,source:e.source}),w}catch(e){console.error(e),D.setWorkflowExecutionData(null),C().setDocumentTitle(P.value.name,`ERROR`),a.showError(e,r.baseText(`workflowRun.showError.title`));return}}}function W(e,t,n,r){let i=new Set,a;if(t!==null&&Object.keys(t).length!==0){a={};for(let o of e){let e=r.getParentNodes(o,N.Main);if(!r.nodes[o].disabled){e.push(o);for(let r of e){if(!t[r]?.length&&!n?.[r]?.length||t[r]?.[0]?.error!==void 0){i.add(r);break}t[r]&&!t[r]?.[0]?.error&&(a[r]=t[r]?.slice(0,1))}}}x(a)&&(a=void 0)}return{runData:a,startNodeNames:[...i]}}async function G(){let e=T.activeExecutionId,t;if(e)try{t=await k.stopCurrentExecution(e)}catch(t){let n=await T.getExecution(e);if(n===void 0)a.showMessage({title:r.baseText(`nodeView.showMessage.stopExecutionCatch.unsaved.title`),message:r.baseText(`nodeView.showMessage.stopExecutionCatch.unsaved.message`),type:`success`});else if(n?.finished){let e={data:n.data,workflowData:T.workflow,finished:n.finished,mode:n.mode,startedAt:n.startedAt,stoppedAt:n.stoppedAt};D.setWorkflowExecutionData(e),a.showMessage({title:r.baseText(`nodeView.showMessage.stopExecutionCatch.title`),message:r.baseText(`nodeView.showMessage.stopExecutionCatch.message`),type:`success`})}else a.showError(t,r.baseText(`nodeView.showError.stopExecution.title`))}finally{await H(async()=>{let n=await T.getExecution(e);return[`running`,`waiting`].includes(n?.status)?!1:(D.markExecutionAsStopped(t),!0)},250,20)||D.markExecutionAsStopped(t)}}async function K(){try{await T.removeTestWebhook(T.workflowId)}catch(e){a.showError(e,r.baseText(`nodeView.showError.stopWaitingForWebhook.title`));return}}async function q(e,n){t.getWorkflowDataToSave().then(n=>{let r={workflow_id:P.value.id,node_graph_string:JSON.stringify(F(n,t.getNodeTypes(),{isCloudDeployment:p.isCloudDeployment}).nodeGraph),button_type:e};u.track(`User clicked execute workflow button`,r),d.run(`nodeView.onRunWorkflow`,r)});let r=n??T.selectedTriggerNodeName;if(!r){let e=Object.values(P.value.nodes).filter(e=>!e.disabled&&e.type.toLowerCase().includes(`trigger`));e.length===1&&(r=e[0].name)}U({triggerNode:r})}return{consolidateRunDataAndStartNodes:W,runEntireWorkflow:q,runWorkflow:U,runWorkflowApi:R,stopCurrentExecution:G,stopWaitingForWebhook:K,sortNodesByYPosition:L}}export{ae as i,Q as n,Z as r,se as t}; //# sourceMappingURL=useRunWorkflow-BbbTafql.js.map