| import type { DataRequestResponse, PartialAdditionalData, TaskData } from '@n8n/task-runner'; |
| import type { |
| IRunExecutionData, |
| IWorkflowExecuteAdditionalData, |
| Workflow, |
| WorkflowParameters, |
| } from 'n8n-workflow'; |
|
|
| |
| |
| |
| |
| |
| |
| export class DataRequestResponseBuilder { |
| buildFromTaskData(taskData: TaskData): DataRequestResponse { |
| return { |
| workflow: this.buildWorkflow(taskData.workflow), |
| inputData: taskData.inputData, |
| connectionInputSource: taskData.executeData?.source ?? null, |
| itemIndex: taskData.itemIndex, |
| activeNodeName: taskData.activeNodeName, |
| contextNodeName: taskData.contextNodeName, |
| defaultReturnRunIndex: taskData.defaultReturnRunIndex, |
| mode: taskData.mode, |
| envProviderState: taskData.envProviderState, |
| node: taskData.node, |
| runExecutionData: this.buildRunExecutionData(taskData.runExecutionData), |
| runIndex: taskData.runIndex, |
| selfData: taskData.selfData, |
| siblingParameters: taskData.siblingParameters, |
| additionalData: this.buildAdditionalData(taskData.additionalData), |
| }; |
| } |
|
|
| private buildAdditionalData( |
| additionalData: IWorkflowExecuteAdditionalData, |
| ): PartialAdditionalData { |
| return { |
| formWaitingBaseUrl: additionalData.formWaitingBaseUrl, |
| instanceBaseUrl: additionalData.instanceBaseUrl, |
| restApiUrl: additionalData.restApiUrl, |
| variables: additionalData.variables, |
| webhookBaseUrl: additionalData.webhookBaseUrl, |
| webhookTestBaseUrl: additionalData.webhookTestBaseUrl, |
| webhookWaitingBaseUrl: additionalData.webhookWaitingBaseUrl, |
| currentNodeParameters: additionalData.currentNodeParameters, |
| executionId: additionalData.executionId, |
| executionTimeoutTimestamp: additionalData.executionTimeoutTimestamp, |
| restartExecutionId: additionalData.restartExecutionId, |
| userId: additionalData.userId, |
| }; |
| } |
|
|
| private buildWorkflow(workflow: Workflow): Omit<WorkflowParameters, 'nodeTypes'> { |
| return { |
| id: workflow.id, |
| name: workflow.name, |
| active: workflow.active, |
| connections: workflow.connectionsBySourceNode, |
| nodes: Object.values(workflow.nodes), |
| pinData: workflow.pinData, |
| settings: workflow.settings, |
| staticData: workflow.staticData, |
| }; |
| } |
|
|
| private buildRunExecutionData(runExecutionData: IRunExecutionData) { |
| return { |
| startData: runExecutionData.startData, |
| resultData: runExecutionData.resultData, |
| executionData: runExecutionData.executionData |
| ? { |
| contextData: runExecutionData.executionData.contextData, |
| metadata: runExecutionData.executionData.metadata, |
|
|
| |
| |
| nodeExecutionStack: [], |
| waitingExecution: {}, |
| waitingExecutionSource: null, |
| } |
| : undefined, |
| }; |
| } |
| } |
|
|