import type { ICredentialDataDecryptedObject, INode, ITriggerFunctions, IWorkflowExecuteAdditionalData, Workflow, WorkflowActivateMode, WorkflowExecuteMode, } from 'n8n-workflow'; import { ApplicationError, createDeferredPromise } from 'n8n-workflow'; // eslint-disable-next-line import/no-cycle import { getBinaryHelperFunctions, getRequestHelperFunctions, getSchedulingFunctions, getSSHTunnelFunctions, returnJsonArray, } from '@/NodeExecuteFunctions'; import { NodeExecutionContext } from './node-execution-context'; const throwOnEmit = () => { throw new ApplicationError('Overwrite TriggerContext.emit function'); }; const throwOnEmitError = () => { throw new ApplicationError('Overwrite TriggerContext.emitError function'); }; export class TriggerContext extends NodeExecutionContext implements ITriggerFunctions { readonly helpers: ITriggerFunctions['helpers']; constructor( workflow: Workflow, node: INode, additionalData: IWorkflowExecuteAdditionalData, mode: WorkflowExecuteMode, private readonly activation: WorkflowActivateMode, readonly emit: ITriggerFunctions['emit'] = throwOnEmit, readonly emitError: ITriggerFunctions['emitError'] = throwOnEmitError, ) { super(workflow, node, additionalData, mode); this.helpers = { createDeferredPromise, returnJsonArray, ...getSSHTunnelFunctions(), ...getRequestHelperFunctions(workflow, node, additionalData), ...getBinaryHelperFunctions(additionalData, workflow.id), ...getSchedulingFunctions(workflow), }; } getActivationMode() { return this.activation; } async getCredentials(type: string) { return await this._getCredentials(type); } }