mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
63 lines
2.3 KiB
TypeScript
63 lines
2.3 KiB
TypeScript
import type { DataRequestResponse, PartialAdditionalData, TaskData } from '@n8n/task-runner';
|
|
import type { IWorkflowExecuteAdditionalData, Workflow, WorkflowParameters } from 'n8n-workflow';
|
|
|
|
/**
|
|
* Transforms TaskData to DataRequestResponse. The main purpose of the
|
|
* transformation is to make sure there is no duplication in the data
|
|
* (e.g. connectionInputData and executeData.data can be derived from
|
|
* inputData).
|
|
*/
|
|
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: 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,
|
|
};
|
|
}
|
|
}
|