n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 13.6 kB
JavaScript
(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.16.1`}}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]=`be8ff807-27b8-49d4-ba0c-9e5459d7f2e1`,e._sentryDebugIdIdentifier=`sentry-dbid-be8ff807-27b8-49d4-ba0c-9e5459d7f2e1`)})()}catch{}import{o as e}from"./chunk-CACdhNlC.js";import{Nt as t,S as n}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{at as r,v as i}from"./core-Bz5WjPxS.js";import{t as a}from"./get-BjzKP_3k.js";import{Br as o,Et as s,Gr as c,Hr as l,In as u,Pn as d,Rt as f,Tt as p,Ur as m,Wr as h,Xr as g,Yr as _,fr as v,h as ee,lr as y,oa as b,qr as x,r as S,ra as C,s as w,ya as T,zt as E}from"./users.store-xP93bV7X.js";import{A as te,Ki as ne,Pt as re,Qi as ie,eo as D,vi as O,yi as k}from"./constants-DuQbSl-q.js";import{T as A,d as j,t as M}from"./useRootStore-XEREVjMN.js";import{t as N}from"./settings.store-CAFiYCMH.js";import{t as P}from"./executions.store-BkB9JOf7.js";import{S as F,l as I,t as L}from"./useCanvasOperations-BAcfYmDn.js";import{t as R}from"./retry-yGXnVxaZ.js";import{t as ae}from"./pushConnection.store-D7Wwlyyp.js";var z=e=>e.toString().split(`.`).concat([`0`,`0`]).slice(0,3).join(`.`),B=e=>!!e&&typeof e==`object`&&`type`in e&&`properties`in e&&!T(e.properties),V=async(e,t)=>{let{nodeType:n,version:r,resource:i,operation:a}=t,o=z(r),s=await j({method:`GET`,baseURL:e,endpoint:`${[`schemas`,n.replace(`@n8n/`,``),o,i,a].filter(Boolean).join(`/`)}.json`,withCredentials:!1});if(!B(s))throw Error(`Invalid JSON schema`);return s};function H(e){return W(e)}function U(e){return[`string`,`number`,`boolean`].includes(e)}function W(e){if(e===null)return{type:`null`};let t=typeof e;return U(t)?{type:t}:Array.isArray(e)?G(e):e&&t===`object`?K(e):{type:`string`}}function G(e){return{type:`array`,items:e.length>0?W(e[0]):{}}}function K(e){let t={};return Object.entries(e).forEach(([e,n])=>{t[e]=W(n)}),{type:`object`,properties:t}}var q=A(`schemaPreview`,()=>{let e=t(new Map),r=M(),i=v(),a=w(),o=n(()=>a.workflowId?b(C(a.workflowId)):void 0);function s({nodeType:e,version:t,operation:n,resource:r}){return`${e}_${t}_${r?.toString()??`all`}_${n?.toString()??`all`}`}async function c(t){let n=s(t),i=e.get(n);if(i)return i;try{let i=k(await V(r.baseUrl,t));return e.set(n,i),i}catch(t){let r=O(t);return e.set(n,r),r}}async function l(t){if(e.size===0||t.data.executionStatus!==`success`)return;let n=o.value?.getNodeByName(t.nodeName)??null;if(!n)return;let{id:r,type:c,typeVersion:l,parameters:{resource:u,operation:d}}=n,f=e.get(s({nodeType:c,version:l,resource:u,operation:d}));f?.ok&&i.track(`User executed node with schema preview`,{node_id:r,node_type:c,node_version:l,node_resource:u,node_operation:d,schema_preview:JSON.stringify(f.result),output_schema:JSON.stringify(H(t.data.data?.main?.[0]?.[0]?.json)),workflow_id:a.workflowId})}return{getSchemaPreview:c,trackSchemaPreviewExecution:l}});function J(e,t,n,r,i){if(e instanceof c)return e.commands.some(n=>J(n,t,e.commands,r,i));if(e instanceof m)return e.connectionData[1]?.node===t;if(e instanceof _){let[r,i]=e.connectionData;return i.node===t?n.some(e=>e instanceof g&&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 h?a.includes(e.node.name):e instanceof x?a.includes(e.nodeName)&&(e.newState||Object.keys(i(e.nodeName)).some(e=>e!==D.Main)):!1}function Y(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===D.Main)for(let e of r)for(let{node:t}of e??[]){let e=Y(t,i,n);if(e)return e}}function X(){let e=l(),t=w(),r=n(()=>t.workflowId?b(C(t.workflowId)):void 0);function i(e){return r.value?.incomingConnectionsByNodeName(e)??{}}function a(e){return r.value?.outgoingConnectionsByNodeName(e)??{}}function s(e){return Object.entries(i(e)).filter(([e])=>e!==D.Main).flatMap(([,e])=>e.flat().filter(e=>e!==null))}function c(e,n){if((t.getParametersLastUpdate(e)??0)>n)return o.PARAMETERS_UPDATED;for(let t of s(e))if(c(t.node,n)!==void 0)return o.UPSTREAM_DIRTY}function u(t,n){for(let r=e.undoStack.length-1;r>=0;r--){let s=e.undoStack[r];if(s.getTimestamp()<n)break;if(J(s,t,[],i,a))return o.INCOMING_CONNECTIONS_UPDATED}for(let e of s(t))if(u(e.node,n)!==void 0)return o.UPSTREAM_DIRTY}let d=n(()=>{let e={};function t(n,r,i){if(i.has(n))return;let o=new Set(i);o.add(n);for(let[i,s]of Object.entries(a(n)))if(i===D.Main)for(let n of s)for(let{node:i}of n??[])(!e[i]||e[i]>r)&&(e[i]=r),t(i,r+1,o)}for(let n of r.value?.allNodes??[])Object.keys(i(n.name)).length>0||(e[n.name]=0,t(n.name,1,new Set));return e});return{dirtinessByName:n(()=>{let e={},n=t.getWorkflowRunData??{};function r(t,n){e[t]=e[t]??n;let r=Y(t,[],i);if(!r)return;let a=[...r].sort((e,t)=>(d.value[e]??2**53-1)-(d.value[t]??2**53-1))?.[0];a&&d.value[a]&&(e[a]=e[a]??o.UPSTREAM_DIRTY)}for(let[e,a]of Object.entries(n)){let n=a[0]?.startTime??0;if(!n)continue;let s=c(e,n);if(s){r(e,s);continue}let l=u(e,n);if(l){r(e,l);continue}if(Object.values(i(e)).flat().flat().filter(e=>e!==null).some(e=>(t.getPinnedDataLastUpdate(e.node)??0)>n)){r(e,o.PINNED_DATA_UPDATED);continue}if((t.getPinnedDataLastRemovedAt(e)??0)>n){r(e,o.PINNED_DATA_UPDATED);continue}}return e})}}var Z=`N8N_AGENT_REQUESTS`,Q=A(`agentRequest`,()=>{let e=i(Z,{}),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]}}}),$=e(a(),1);function oe(e){let t=p(),i=r(),a=d(),o=v(),c=u(),l=N(),m=S(),h=Q(),g=M(),_=ae(),x=w(),O=e.workflowState??s(),k=n(()=>x.workflowId?b(C(x.workflowId)):void 0),A=y(),j=E({router:e.router,workflowState:O}),z=P(),{dirtinessByName:B}=X(),{startChat:V}=L(),H=F(),U=n(()=>x.workflowObject);function W(e){return[...e].sort((e,t)=>{let n=k.value?.getNodeByName(e)?.position??[0,0],r=k.value?.getNodeByName(t)?.position??[0,0],i=n[1],a=r[1];return i===a?0:i>a?1:-1})}async function G(e){if(!_.isConnected)throw Error(i.baseText(`workflowRun.noActiveConnectionToTheServer`));O.setActiveExecutionId(null);let t;try{t=await x.runWorkflow(e)}catch(e){throw O.setActiveExecutionId(void 0),e}let n=x.previousExecutionId!==t.executionId,r=x.activeExecutionId===null;return t.executionId&&n&&r&&O.setActiveExecutionId(t.executionId),t.waitingForWebhook===!0&&(x.executionWaitingForWebhook=!0),t}async function K(e){if(!x.activeExecutionId){a.clearAllStickyNotifications();try{let n=[];e.destinationNode!==void 0&&(n=U.value.getParentNodes(e.destinationNode.nodeName,D.Main,-1));let r=x.getWorkflowRunData;(m.stateIsDirty||!x.isWorkflowSaved[x.workflowId])&&await j.saveCurrentWorkflow();let o=await t.getWorkflowDataToSave();if(g.binaryDataMode===`default`&&o.settings?.binaryMode===`combined`){a.showMessage({title:i.baseText(`workflowRun.showError.unsupportedExecutionLogic.title`),message:i.baseText(`workflowRun.showError.unsupportedExecutionLogic.description`),type:`error`});return}let{startNodeNames:s}=q(n,r,o.pinData,U.value),l=e.destinationNode?k.value?.getNodeByName(e.destinationNode.nodeName)?.type??``:``,u,d;if(s.length===0&&n.length===0&&`destinationNode`in e&&e.destinationNode!==void 0?(u=e.destinationNode.nodeName,s.push(e.destinationNode.nodeName)):e.triggerNode&&e.nodeData&&!e.rerunTriggerNode?s.push(...U.value.getChildNodes(e.triggerNode,D.Main,1)):e.destinationNode&&(u=e.destinationNode.nodeName),e.triggerNode&&(d={name:e.triggerNode,data:e.nodeData}),e.destinationNode&&(x.checkIfNodeHasChatParent(e.destinationNode.nodeName)||x.checkIfToolNodeHasChatParent(e.destinationNode.nodeName)||l===`@n8n/n8n-nodes-langchain.chatTrigger`)&&e.source!==`RunData.ManualChatMessage`&&e.source!==`RunData.ManualChatTrigger`){let t=U.value.getStartNode(e.destinationNode.nodeName);if(t&&t.type===`@n8n/n8n-nodes-langchain.chatTrigger`){let n=A.getNodeInputData(t,0,0,`input`)?.length>0,r=!!o.pinData?.[t.name];if(!n&&!r){x.chatPartialExecutionDestinationNode=e.destinationNode.nodeName,V();return}}V()}let p=o.nodes.filter(e=>!e.disabled&&e.type.toLowerCase().includes(`trigger`)),_=p.find(e=>e.type===re),v=_?.parameters?.options;e.triggerNode===_?.name&&v?.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:i.baseText(`workflowRun.showWarning.noChatResponseNodes.title`),message:i.baseText(`workflowRun.showWarning.noChatResponseNodes.description`),type:`warning`})),!e.destinationNode&&e.source!==`RunData.ManualChatMessage`&&_&&p.filter(e=>e.type!==`@n8n/n8n-nodes-langchain.chatTrigger`).length&&(_.disabled=!0);let y=e.destinationNode!==void 0,b=W(s).map(e=>{let n=(0,$.default)(r,[e,0,`source`,0],null);if(n===null){let r=U.value.getParentNodes(e,D.Main,1);n=(0,$.default)(t.executeData(U.value.connectionsBySourceNode,r,e,D.Main,0),[`source`,D.Main,0],null)}return{name:e,sourceData:n}}).filter(t=>e.destinationNode&&x.checkIfNodeHasChatParent(e.destinationNode.nodeName)?t.name!==e.destinationNode.nodeName:!0),S={workflowId:o.id,runData:y?r??void 0:void 0,startNodes:b,triggerToStartFrom:d,chatSessionId:e.sessionId};if(`destinationNode`in e){S.destinationNode=e.destinationNode;let t=k.value?.getNodeByName(e.destinationNode?.nodeName??``)?.id;if(U.value.id&&t){let e=h.getAgentRequest(U.value.id,t);e&&(S.agentRequest={query:e.query??{},tool:{name:e.toolName??``}})}}if(S.runData){let e=Object.entries(B.value).flatMap(([e,t])=>t?[e]:[]);S.dirtyNodeNames=e.length>0?e:void 0}let C={id:te,finished:!1,mode:`manual`,status:`running`,createdAt:new Date,startedAt:new Date,stoppedAt:void 0,workflowId:U.value.id,executedNode:u,triggerNode:d?.name,data:ne({resultData:{runData:S.runData??{},pinData:o.pinData}}),workflowData:{id:x.workflowId,name:o.name,active:o.active,createdAt:0,updatedAt:0,...o}};O.setWorkflowExecutionData(C),A.updateNodesExecutionIssues(),f().setDocumentTitle(U.value.name,`EXECUTING`);let w=await G(S);!H?.ws&&v?.responseMode===`responseNodes`&&e.source!==`RunData.ManualChatMessage`&&e.source!==`RunData.ManualChatTrigger`&&w.executionId&&I.emit(`setupWebsocket`,w.executionId);let T=o.pinData??{},E=e=>{let t=e.parameters.path||e.parameters.options?.path||e.webhookId;return`${g.formTestUrl}/${t}`};try{await ee({nodes:o.nodes,runData:x.getWorkflowExecution?.data?.resultData?.runData,destinationNode:e.destinationNode?.nodeName,triggerNode:e.triggerNode,pinData:T,directParentNodes:n,source:e.source,getTestUrl:E})}catch{}return await c.run(`workflowRun.runWorkflow`,{nodeName:e.destinationNode?.nodeName,source:e.source}),w}catch(e){console.error(e),O.setWorkflowExecutionData(null),f().setDocumentTitle(U.value.name,`ERROR`),a.showError(e,i.baseText(`workflowRun.showError.title`));return}}}function q(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,D.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))}}}T(a)&&(a=void 0)}return{runData:a,startNodeNames:[...i]}}async function J(){let e=x.activeExecutionId,t;if(e)try{t=await z.stopCurrentExecution(e)}catch(t){let n=await x.getExecution(e);if(n===void 0)a.showMessage({title:i.baseText(`nodeView.showMessage.stopExecutionCatch.unsaved.title`),message:i.baseText(`nodeView.showMessage.stopExecutionCatch.unsaved.message`),type:`success`});else if(n?.finished){let e={data:n.data,workflowData:x.workflow,finished:n.finished,mode:n.mode,startedAt:n.startedAt,stoppedAt:n.stoppedAt};O.setWorkflowExecutionData(e),a.showMessage({title:i.baseText(`nodeView.showMessage.stopExecutionCatch.title`),message:i.baseText(`nodeView.showMessage.stopExecutionCatch.message`),type:`success`})}else a.showError(t,i.baseText(`nodeView.showError.stopExecution.title`))}finally{await R(async()=>{let n=await x.getExecution(e);return[`running`,`waiting`].includes(n?.status)?!1:(O.markExecutionAsStopped(t),!0)},250,20)||O.markExecutionAsStopped(t)}}async function Y(){try{await x.removeTestWebhook(x.workflowId)}catch(e){a.showError(e,i.baseText(`nodeView.showError.stopWaitingForWebhook.title`));return}}async function Z(e,n){t.getWorkflowDataToSave().then(n=>{let r={workflow_id:U.value.id,node_graph_string:JSON.stringify(ie(n,t.getNodeTypes(),{isCloudDeployment:l.isCloudDeployment}).nodeGraph),button_type:e};o.track(`User clicked execute workflow button`,r),c.run(`nodeView.onRunWorkflow`,r)});let r=n??x.selectedTriggerNodeName;if(!r){let e=Object.values(U.value.nodes).filter(e=>!e.disabled&&e.type.toLowerCase().includes(`trigger`));e.length===1&&(r=e[0].name)}K({triggerNode:r})}return{consolidateRunDataAndStartNodes:q,runEntireWorkflow:Z,runWorkflow:K,runWorkflowApi:G,stopCurrentExecution:J,stopWaitingForWebhook:Y,sortNodesByYPosition:W}}export{q as i,Q as n,X as r,oe as t};
//# sourceMappingURL=useRunWorkflow-Cii0mAex.js.map