import * as express from 'express' ; import * as FormData from 'form-data' ; import { URLSearchParams } from 'url' ; import { IDeferredPromise } from './DeferredPromise' ; import { Workflow } from './Workflow' ; import { WorkflowHooks } from './WorkflowHooks' ; import { WorkflowOperationError } from './WorkflowErrors' ; import { NodeApiError , NodeOperationError } from './NodeErrors' ; export type IAllExecuteFunctions = IExecuteFunctions | IExecuteSingleFunctions | IHookFunctions | ILoadOptionsFunctions | IPollFunctions | ITriggerFunctions | IWebhookFunctions ; export interface IBinaryData { [ key ] : string | undefined ; data : string ; mimeType : string ; fileName ? : string ; directory ? : string ; fileExtension ? : string ; id ? : string ; } export interface IOAuth2Options { includeCredentialsOnRefreshOnBody ? : boolean ; property ? : string ; tokenType ? : string ; keepBearer ? : boolean ; tokenExpiredStatusCode ? : number ; } export interface IConnection { node : string ; type : string ; index : number ; } export type ExecutionError = WorkflowOperationError | NodeOperationError | NodeApiError ; export interface IGetCredentials { get ( type , id ) : Promise < ICredentialsEncrypted > ; } export abstract class ICredentials { id ? : string ; name : string ; type : string ; data : string | undefined ; nodesAccess : ICredentialNodeAccess [ ] ; constructor ( nodeCredentials , type , nodesAccess , data ? ) { this . id = nodeCredentials . id || undefined ; this . name = nodeCredentials . name ; this . type = type ; this . nodesAccess = nodesAccess ; this . data = data ; } abstract getData ( encryptionKey , nodeType ? ) ; abstract getDataKey ( key , encryptionKey , nodeType ? ) ; abstract getDataToSave ( ) ; abstract hasNodeAccess ( nodeType ) ; abstract setData ( data , encryptionKey ) ; abstract setDataKey ( key , data , encryptionKey ) ; } export interface ICredentialNodeAccess { nodeType : string ; user ? : string ; date ? : Date ; } export interface ICredentialsDecrypted { id : string | number ; name : string ; type : string ; nodesAccess : ICredentialNodeAccess [ ] ; data ? : ICredentialDataDecryptedObject ; } export interface ICredentialsEncrypted { id ? : string | number ; name : string ; type : string ; nodesAccess : ICredentialNodeAccess [ ] ; data ? : string ; } export interface ICredentialsExpressionResolveValues { connectionInputData : INodeExecutionData [ ] ; itemIndex : number ; node : INode ; runExecutionData : IRunExecutionData | null ; runIndex : number ; workflow : Workflow ; } export abstract class ICredentialsHelper { encryptionKey : string ; constructor ( encryptionKey ) { this . encryptionKey = encryptionKey ; } abstract getCredentials ( nodeCredentials , type ) ; abstract getDecrypted ( nodeCredentials , type , mode , raw ? , expressionResolveValues ? ) ; abstract updateCredentials ( nodeCredentials , type , data ) ; } export interface ICredentialType { name : string ; displayName : string ; icon ? : string ; extends ? : string [ ] ; properties : INodeProperties [ ] ; documentationUrl ? : string ; __overwrittenProperties ? : string [ ] ; } export interface ICredentialTypes { credentialTypes ? : { [ key ] : ICredentialType ; } ; init ( credentialTypes ? ) : Promise < void > ; getAll ( ) : ICredentialType [ ] ; getByName ( credentialType ) : ICredentialType ; } export interface ICredentialData { id ? : string ; name : string ; data : string ; nodesAccess : ICredentialNodeAccess [ ] ; } export type CredentialInformation = string | number | boolean | IDataObject ; export interface ICredentialDataDecryptedObject { [ key ] : CredentialInformation ; } export type NodeInputConnections = IConnection [ ] [ ] ; export interface INodeConnections { [ key ] : NodeInputConnections ; } export interface IConnections { [ key ] : INodeConnections ; } export type GenericValue = string | object | number | boolean | undefined | null ; export interface IDataObject { [ key ] : GenericValue | IDataObject | GenericValue [ ] | IDataObject [ ] ; } export type IExecuteResponsePromiseData = IDataObject | IN8nHttpFullResponse ; export interface INodeTypeNameVersion { name : string ; version : number ; } export interface IGetExecutePollFunctions { ( workflow , node , additionalData , mode , activation ) : IPollFunctions ; } export interface IGetExecuteTriggerFunctions { ( workflow , node , additionalData , mode , activation ) : ITriggerFunctions ; } export interface IGetExecuteFunctions { ( workflow , runExecutionData , runIndex , connectionInputData , inputData , node , additionalData , mode ) : IExecuteFunctions ; } export interface IGetExecuteSingleFunctions { ( workflow , runExecutionData , runIndex , connectionInputData , inputData , node , itemIndex , additionalData , mode ) : IExecuteSingleFunctions ; } export interface IGetExecuteHookFunctions { ( workflow , node , additionalData , mode , activation , isTest ? , webhookData ? ) : IHookFunctions ; } export interface IGetExecuteWebhookFunctions { ( workflow , node , additionalData , mode , webhookData ) : IWebhookFunctions ; } export interface IExecuteData { data : ITaskDataConnections ; node : INode ; } export type IContextObject = { [ key ] : any ; } ; export interface IExecuteContextData { [ key ] : IContextObject ; } export interface IHttpRequestOptions { url : string ; headers ? : IDataObject ; method ? : 'DELETE' | 'GET' | 'HEAD' | 'PATCH' | 'POST' | 'PUT' ; body ? : FormData | GenericValue | GenericValue [ ] | Buffer | URLSearchParams ; qs ? : IDataObject ; arrayFormat ? : 'indices' | 'brackets' | 'repeat' | 'comma' ; auth ? : { username : string ; password : string ; } ; disableFollowRedirect ? : boolean ; encoding ? : 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' ; skipSslCertificateValidation ? : boolean ; returnFullResponse ? : boolean ; proxy ? : { host : string ; port : number ; auth ? : { username : string ; password : string ; } ; protocol ? : string ; } ; timeout ? : number ; json ? : boolean ; } export type IN8nHttpResponse = IDataObject | Buffer | GenericValue | GenericValue [ ] | null ; export interface IN8nHttpFullResponse { body : IN8nHttpResponse ; headers : IDataObject ; statusCode : number ; statusMessage ? : string ; } export interface IExecuteFunctions { continueOnFail ( ) : boolean ; evaluateExpression ( expression , itemIndex ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] ; executeWorkflow ( workflowInfo , inputData ? ) : Promise < any > ; getContext ( type ) : IContextObject ; getCredentials ( type , itemIndex ? ) : Promise < ICredentialDataDecryptedObject | undefined > ; getInputData ( inputIndex ? , inputName ? ) : INodeExecutionData [ ] ; getMode ( ) : WorkflowExecuteMode ; getNode ( ) : INode ; getNodeParameter < T extends { resource : string ; } > ( parameterName , itemIndex ? ) : T [ 'resource' ] ; getNodeParameter ( parameterName , itemIndex , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getWorkflowDataProxy ( itemIndex ) : IWorkflowDataProxyData ; getWorkflowStaticData ( type ) : IDataObject ; getRestApiUrl ( ) : string ; getTimezone ( ) : string ; getWorkflow ( ) : IWorkflowMetadata ; prepareOutputData ( outputData , outputIndex ? ) : Promise < INodeExecutionData [ ] [ ] > ; putExecutionToWait ( waitTill ) : Promise < void > ; sendMessageToUI ( message ) : void ; sendResponse ( response ) : void ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface IExecuteSingleFunctions { continueOnFail ( ) : boolean ; evaluateExpression ( expression , itemIndex ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] ; getContext ( type ) : IContextObject ; getCredentials ( type ) : Promise < ICredentialDataDecryptedObject | undefined > ; getInputData ( inputIndex ? , inputName ? ) : INodeExecutionData ; getMode ( ) : WorkflowExecuteMode ; getNode ( ) : INode ; getNodeParameter ( parameterName , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getRestApiUrl ( ) : string ; getTimezone ( ) : string ; getWorkflow ( ) : IWorkflowMetadata ; getWorkflowDataProxy ( ) : IWorkflowDataProxyData ; getWorkflowStaticData ( type ) : IDataObject ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface IExecuteWorkflowInfo { code ? : IWorkflowBase ; id ? : string ; } export interface ICredentialTestFunctions { helpers : { [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface ILoadOptionsFunctions { getCredentials ( type ) : Promise < ICredentialDataDecryptedObject | undefined > ; getNode ( ) : INode ; getNodeParameter ( parameterName , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getCurrentNodeParameter ( parameterName ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object | undefined ; getCurrentNodeParameters ( ) : INodeParameters | undefined ; getTimezone ( ) : string ; getRestApiUrl ( ) : string ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ( ... args : any [ ] ) => any ) | undefined ; } ; } export interface IHookFunctions { getCredentials ( type ) : Promise < ICredentialDataDecryptedObject | undefined > ; getMode ( ) : WorkflowExecuteMode ; getActivationMode ( ) : WorkflowActivateMode ; getNode ( ) : INode ; getNodeWebhookUrl : ( name : string ) => string | undefined ; getNodeParameter ( parameterName , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getTimezone ( ) : string ; getWebhookDescription ( name ) : IWebhookDescription | undefined ; getWebhookName ( ) : string ; getWorkflow ( ) : IWorkflowMetadata ; getWorkflowStaticData ( type ) : IDataObject ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface IPollFunctions { __emit ( data ) : void ; getCredentials ( type ) : Promise < ICredentialDataDecryptedObject | undefined > ; getMode ( ) : WorkflowExecuteMode ; getActivationMode ( ) : WorkflowActivateMode ; getNode ( ) : INode ; getNodeParameter ( parameterName , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getRestApiUrl ( ) : string ; getTimezone ( ) : string ; getWorkflow ( ) : IWorkflowMetadata ; getWorkflowStaticData ( type ) : IDataObject ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface ITriggerFunctions { emit ( data , responsePromise ? ) : void ; getCredentials ( type ) : Promise < ICredentialDataDecryptedObject | undefined > ; getMode ( ) : WorkflowExecuteMode ; getActivationMode ( ) : WorkflowActivateMode ; getNode ( ) : INode ; getNodeParameter ( parameterName , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getRestApiUrl ( ) : string ; getTimezone ( ) : string ; getWorkflow ( ) : IWorkflowMetadata ; getWorkflowStaticData ( type ) : IDataObject ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface IWebhookFunctions { getBodyData ( ) : IDataObject ; getCredentials ( type ) : Promise < ICredentialDataDecryptedObject | undefined > ; getHeaderData ( ) : object ; getMode ( ) : WorkflowExecuteMode ; getNode ( ) : INode ; getNodeParameter ( parameterName , fallbackValue ? ) : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] | object ; getNodeWebhookUrl : ( name : string ) => string | undefined ; getParamsData ( ) : object ; getQueryData ( ) : object ; getRequestObject ( ) : express . Request ; getResponseObject ( ) : express . Response ; getTimezone ( ) : string ; getWebhookName ( ) : string ; getWorkflowStaticData ( type ) : IDataObject ; getWorkflow ( ) : IWorkflowMetadata ; prepareOutputData ( outputData , outputIndex ? ) : Promise < INodeExecutionData [ ] [ ] > ; helpers : { httpRequest ( requestOptions ) : Promise < IN8nHttpResponse | IN8nHttpFullResponse > ; [ key ] : ( ... args : any [ ] ) => any ; } ; } export interface INodeCredentialsDetails { id : string | null ; name : string ; } export interface INodeCredentials { [ key ] : INodeCredentialsDetails ; } export interface INode { name : string ; typeVersion : number ; type : string ; position : [ number , number ] ; disabled ? : boolean ; notes ? : string ; notesInFlow ? : boolean ; retryOnFail ? : boolean ; maxTries ? : number ; waitBetweenTries ? : number ; alwaysOutputData ? : boolean ; executeOnce ? : boolean ; continueOnFail ? : boolean ; parameters : INodeParameters ; credentials ? : INodeCredentials ; webhookId ? : string ; } export interface INodes { [ key ] : INode ; } export interface IObservableObject { [ key ] : any ; __dataChanged : boolean ; } export interface IBinaryKeyData { [ key ] : IBinaryData ; } export interface INodeExecutionData { [ key ] : IDataObject | IBinaryKeyData | NodeApiError | NodeOperationError | undefined ; json : IDataObject ; binary ? : IBinaryKeyData ; error ? : NodeApiError | NodeOperationError ; } export interface INodeExecuteFunctions { getExecutePollFunctions : IGetExecutePollFunctions ; getExecuteTriggerFunctions : IGetExecuteTriggerFunctions ; getExecuteFunctions : IGetExecuteFunctions ; getExecuteSingleFunctions : IGetExecuteSingleFunctions ; getExecuteHookFunctions : IGetExecuteHookFunctions ; getExecuteWebhookFunctions : IGetExecuteWebhookFunctions ; } export type NodeParameterValue = string | number | boolean | undefined | null ; export interface INodeParameters { [ key ] : NodeParameterValue | INodeParameters | NodeParameterValue [ ] | INodeParameters [ ] ; } export type NodePropertyTypes = 'boolean' | 'collection' | 'color' | 'dateTime' | 'fixedCollection' | 'hidden' | 'json' | 'notice' | 'multiOptions' | 'number' | 'options' | 'string' ; export type CodeAutocompleteTypes = 'function' | 'functionItem' ; export type EditorTypes = 'code' | 'json' ; export interface INodePropertyTypeOptions { alwaysOpenEditWindow ? : boolean ; codeAutocomplete ? : CodeAutocompleteTypes ; editor ? : EditorTypes ; loadOptionsDependsOn ? : string [ ] ; loadOptionsMethod ? : string ; maxValue ? : number ; minValue ? : number ; multipleValues ? : boolean ; multipleValueButtonText ? : string ; numberPrecision ? : number ; password ? : boolean ; rows ? : number ; showAlpha ? : boolean ; sortable ? : boolean ; [ key ] : boolean | number | string | EditorTypes | undefined | string [ ] ; } export interface IDisplayOptions { hide ? : { [ key ] : NodeParameterValue [ ] | undefined ; } ; show ? : { [ key ] : NodeParameterValue [ ] | undefined ; } ; } export interface INodeProperties { displayName : string ; name : string ; type : NodePropertyTypes ; typeOptions ? : INodePropertyTypeOptions ; default : NodeParameterValue | INodeParameters | INodeParameters [ ] | NodeParameterValue [ ] ; description ? : string ; displayOptions ? : IDisplayOptions ; options ? : Array < INodePropertyOptions | INodeProperties | INodePropertyCollection > ; placeholder ? : string ; isNodeSetting ? : boolean ; noDataExpression ? : boolean ; required ? : boolean ; } export interface INodePropertyOptions { name : string ; value : string | number | boolean ; description ? : string ; } export interface INodePropertyCollection { displayName : string ; name : string ; values : INodeProperties [ ] ; } export interface IParameterDependencies { [ key ] : string [ ] ; } export interface IPollResponse { closeFunction ? : ( ) => Promise < void > ; } export interface ITriggerResponse { closeFunction ? : ( ) => Promise < void > ; manualTriggerFunction ? : ( ) => Promise < void > ; manualTriggerResponse ? : Promise < INodeExecutionData [ ] [ ] > ; } export interface INodeType { description : INodeTypeDescription ; execute ? ( this ) : Promise < INodeExecutionData [ ] [ ] | null > ; executeSingle ? ( this ) : Promise < INodeExecutionData > ; poll ? ( this ) : Promise < INodeExecutionData [ ] [ ] | null > ; trigger ? ( this ) : Promise < ITriggerResponse | undefined > ; webhook ? ( this ) : Promise < IWebhookResponseData > ; hooks ? : { [ key ] : ( this : IHookFunctions ) => Promise < boolean > ; } ; methods ? : { loadOptions ? : { [ key ] : ( this : ILoadOptionsFunctions ) => Promise < INodePropertyOptions [ ] > ; } ; credentialTest ? : { [ functionName ] : ( this : ICredentialTestFunctions , credential : ICredentialsDecrypted ) => Promise < NodeCredentialTestResult > ; } ; } ; webhookMethods ? : { [ key ] : IWebhookSetupMethods ; } ; } export interface INodeVersionedType { nodeVersions : { [ key ] : INodeType ; } ; currentVersion : number ; description : INodeTypeBaseDescription ; getNodeType : ( version ? : number ) => INodeType ; } export interface NodeCredentialTestResult { status : 'OK' | 'Error' ; message : string ; } export interface NodeCredentialTestRequest { nodeToTestWith ? : string ; credentials : ICredentialsDecrypted ; } export type WebhookSetupMethodNames = 'checkExists' | 'create' | 'delete' ; export interface IWebhookSetupMethods { [ key ] : ( ( this : IHookFunctions ) => Promise < boolean > ) | undefined ; checkExists ? : ( this : IHookFunctions ) => Promise < boolean > ; create ? : ( this : IHookFunctions ) => Promise < boolean > ; delete ? : ( this : IHookFunctions ) => Promise < boolean > ; } export interface INodeCredentialDescription { name : string ; required ? : boolean ; displayOptions ? : IDisplayOptions ; testedBy ? : string ; } export type INodeIssueTypes = 'credentials' | 'execution' | 'parameters' | 'typeUnknown' ; export interface INodeIssueObjectProperty { [ key ] : string [ ] ; } export interface INodeIssueData { node : string ; type : INodeIssueTypes ; value : boolean | string | string [ ] | INodeIssueObjectProperty ; } export interface INodeIssues { execution ? : boolean ; credentials ? : INodeIssueObjectProperty ; parameters ? : INodeIssueObjectProperty ; typeUnknown ? : boolean ; [ key ] : undefined | boolean | INodeIssueObjectProperty ; } export interface IWorfklowIssues { [ key ] : INodeIssues ; } export interface INodeTypeBaseDescription { displayName : string ; name : string ; icon ? : string ; group : string [ ] ; description : string ; documentationUrl ? : string ; subtitle ? : string ; defaultVersion ? : number ; codex ? : CodexData ; } export interface INodeTypeDescription extends INodeTypeBaseDescription { version : number ; defaults : INodeParameters ; eventTriggerDescription ? : string ; inputs : string [ ] ; inputNames ? : string [ ] ; outputs : string [ ] ; outputNames ? : string [ ] ; properties : INodeProperties [ ] ; credentials ? : INodeCredentialDescription [ ] ; maxNodes ? : number ; polling ? : boolean ; hooks ? : { [ key ] : INodeHookDescription [ ] | undefined ; activate ? : INodeHookDescription [ ] ; deactivate ? : INodeHookDescription [ ] ; } ; webhooks ? : IWebhookDescription [ ] ; translation ? : { [ key ] : object ; } ; } export interface INodeHookDescription { method : string ; } export interface IWebhookData { httpMethod : WebhookHttpMethod ; node : string ; path : string ; webhookDescription : IWebhookDescription ; workflowId : string ; workflowExecuteAdditionalData : IWorkflowExecuteAdditionalData ; webhookId ? : string ; } export interface IWebhookDescription { [ key ] : WebhookHttpMethod | WebhookResponseMode | boolean | string | undefined ; httpMethod : WebhookHttpMethod | string ; isFullPath ? : boolean ; name : string ; path : string ; responseBinaryPropertyName ? : string ; responseContentType ? : string ; responsePropertyName ? : string ; responseMode ? : WebhookResponseMode | string ; responseData ? : WebhookResponseData | string ; restartWebhook ? : boolean ; } export interface IWorkflowDataProxyData { [ key ] : any ; $binary : any ; $data : any ; $env : any ; $evaluateExpression : any ; $item : any ; $items : any ; $json : any ; $node : any ; $parameter : any ; $position : any ; $workflow : any ; } export interface IWorkflowDataProxyAdditionalKeys { [ key ] : string | number | undefined ; } export interface IWorkflowMetadata { id ? : number | string ; name ? : string ; active : boolean ; } export type WebhookHttpMethod = 'GET' | 'POST' | 'HEAD' | 'OPTIONS' ; export interface IWebhookResponseData { workflowData ? : INodeExecutionData [ ] [ ] ; webhookResponse ? : any ; noWebhookResponse ? : boolean ; } export type WebhookResponseData = 'allEntries' | 'firstEntryJson' | 'firstEntryBinary' ; export type WebhookResponseMode = 'onReceived' | 'lastNode' ; export interface INodeTypes { nodeTypes : INodeTypeData ; init ( nodeTypes ? ) : Promise < void > ; getAll ( ) : Array < INodeType | INodeVersionedType > ; getByName ( nodeType ) : INodeType | INodeVersionedType | undefined ; getByNameAndVersion ( nodeType , version ? ) : INodeType | undefined ; } export interface INodeTypeData { [ key ] : { type : INodeType | INodeVersionedType ; sourcePath : string ; } ; } export interface IRun { data : IRunExecutionData ; finished ? : boolean ; mode : WorkflowExecuteMode ; waitTill ? : Date ; startedAt : Date ; stoppedAt ? : Date ; } export interface IRunExecutionData { startData ? : { destinationNode ? : string ; runNodeFilter ? : string [ ] ; } ; resultData : { error ? : ExecutionError ; runData : IRunData ; lastNodeExecuted ? : string ; } ; executionData ? : { contextData : IExecuteContextData ; nodeExecutionStack : IExecuteData [ ] ; waitingExecution : IWaitingForExecution ; } ; waitTill ? : Date ; } export interface IRunData { [ key ] : ITaskData [ ] ; } export interface ITaskData { startTime : number ; executionTime : number ; data ? : ITaskDataConnections ; error ? : ExecutionError ; } export interface ITaskDataConnections { [ key ] : Array < INodeExecutionData [ ] | null > ; } export interface IWaitingForExecution { [ key ] : { [ key ] : ITaskDataConnections ; } ; } export interface IWorkflowBase { id ? : number | string | any ; name : string ; active : boolean ; createdAt : Date ; updatedAt : Date ; nodes : INode [ ] ; connections : IConnections ; settings ? : IWorkflowSettings ; staticData ? : IDataObject ; } export interface IWorkflowCredentials { [ credentialType ] : { [ id ] : ICredentialsEncrypted ; } ; } export interface IWorkflowExecuteHooks { [ key ] : Array < ( ... args : any [ ] ) => Promise < void > > | undefined ; nodeExecuteAfter ? : Array < ( nodeName : string , data : ITaskData , executionData : IRunExecutionData ) => Promise < void > > ; nodeExecuteBefore ? : Array < ( nodeName : string ) => Promise < void > > ; workflowExecuteAfter ? : Array < ( data : IRun , newStaticData : IDataObject ) => Promise < void > > ; workflowExecuteBefore ? : Array < ( workflow : Workflow , data : IRunExecutionData ) => Promise < void > > ; sendResponse ? : Array < ( response : IExecuteResponsePromiseData ) => Promise < void > > ; } export interface IWorkflowExecuteAdditionalData { credentialsHelper : ICredentialsHelper ; encryptionKey : string ; executeWorkflow : ( workflowInfo : IExecuteWorkflowInfo , additionalData : IWorkflowExecuteAdditionalData , inputData ? : INodeExecutionData [ ] , parentExecutionId ? : string , loadedWorkflowData ? : IWorkflowBase , loadedRunData ? : any ) => Promise < any > ; executionId ? : string ; hooks ? : WorkflowHooks ; httpResponse ? : express . Response ; httpRequest ? : express . Request ; restApiUrl : string ; sendMessageToUI ? : ( source : string , message : any ) => void ; timezone : string ; webhookBaseUrl : string ; webhookWaitingBaseUrl : string ; webhookTestBaseUrl : string ; currentNodeParameters ? : INodeParameters ; executionTimeoutTimestamp ? : number ; } export type WorkflowExecuteMode = 'cli' | 'error' | 'integrated' | 'internal' | 'manual' | 'retry' | 'trigger' | 'webhook' ; export type WorkflowActivateMode = 'init' | 'create' | 'update' | 'activate' | 'manual' ; export interface IWorkflowHooksOptionalParameters { parentProcessMode ? : string ; retryOf ? : string ; sessionId ? : string ; } export interface IWorkflowSettings { [ key ] : IDataObject | string | number | boolean | undefined ; } export type LogTypes = 'debug' | 'verbose' | 'info' | 'warn' | 'error' ; export interface ILogger { log : ( type : LogTypes , message : string , meta ? : object ) => void ; debug : ( message : string , meta ? : object ) => void ; verbose : ( message : string , meta ? : object ) => void ; info : ( message : string , meta ? : object ) => void ; warn : ( message : string , meta ? : object ) => void ; error : ( message : string , meta ? : object ) => void ; } export interface IStatusCodeMessages { [ key ] : string ; } export type CodexData = { categories ? : string [ ] ; subcategories ? : { [ category ] : string [ ] ; } ; alias ? : string [ ] ; } ; export type JsonValue = string | number | boolean | null | JsonObject | JsonValue [ ] ; export type JsonObject = { [ key ] : JsonValue ; } ; export type AllEntities < M > = M extends { [ key ] : string ; } ? Entity < M , keyof M > : never ; export type Entity < M , K > = K extends keyof M ? { resource : K ; operation : M [ K ] ; } : never ; export type PropertiesOf < M extends { resource : string ; operation : string ; } > = Array < Omit < INodeProperties , 'displayOptions' > & { displayOptions ? : { [ key in 'show' | 'hide' ] ? : { resource ? : Array < M [ 'resource' ] > ; operation ? : Array < M [ 'operation' ] > ; [ otherKey ] : NodeParameterValue [ ] | undefined ; } ; } ; } > ; export interface INodesGraph { node_types : string [ ] ; node_connections : IDataObject [ ] ; nodes : INodesGraphNode ; } export interface INodesGraphNode { [ key ] : INodeGraphItem ; } export interface INodeGraphItem { type : string ; resource ? : string ; operation ? : string ; domain ? : string ; position : [ number , number ] ; mode ? : string ; } export interface INodeNameIndex { [ name ] : string ; } export interface INodesGraphResult { nodeGraph : INodesGraph ; nameIndices : INodeNameIndex ; } export interface ITelemetryClientConfig { url : string ; key : string ; } export interface ITelemetrySettings { enabled : boolean ; config ? : ITelemetryClientConfig ; }