/* eslint-disable @typescript-eslint/no-explicit-any */ import { IAdditionalCredentialOptions, IAllExecuteFunctions, IBinaryData, ICredentialTestFunctions as ICredentialTestFunctionsBase, ICredentialType, IDataObject, IExecuteFunctions as IExecuteFunctionsBase, IExecuteSingleFunctions as IExecuteSingleFunctionsBase, IHookFunctions as IHookFunctionsBase, IHttpRequestOptions, ILoadOptionsFunctions as ILoadOptionsFunctionsBase, INodeExecutionData, INodeType, IOAuth2Options, IPairedItemData, IPollFunctions as IPollFunctionsBase, IPollResponse, ITriggerFunctions as ITriggerFunctionsBase, ITriggerResponse, IWebhookFunctions as IWebhookFunctionsBase, IWorkflowSettings as IWorkflowSettingsWorkflow, NodeExecutionWithMetadata, } from 'n8n-workflow'; import { OptionsWithUri, OptionsWithUrl } from 'request'; import requestPromise from 'request-promise-native'; interface Constructable { new (): T; } export interface IProcessMessage { data?: any; type: string; } export interface IExecuteFunctions extends IExecuteFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; getBinaryDataBuffer(itemIndex: number, propertyName: string): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; // tslint:disable-line:no-any requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; normalizeItems(items: INodeExecutionData | INodeExecutionData[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; constructExecutionMetaData( inputData: INodeExecutionData[], options: { itemData: IPairedItemData | IPairedItemData[] }, ): NodeExecutionWithMetadata[]; }; } export interface IExecuteSingleFunctions extends IExecuteSingleFunctionsBase { helpers: { getBinaryDataBuffer(propertyName: string, inputIndex?: number): Promise; httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; // tslint:disable-line:no-any requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IPollFunctions extends IPollFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; // tslint:disable-line:no-any requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IResponseError extends Error { statusCode?: number; } export interface ITriggerFunctions extends ITriggerFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; // tslint:disable-line:no-any requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IUserSettings { encryptionKey?: string; tunnelSubdomain?: string; instanceId?: string; } export interface ILoadOptionsFunctions extends ILoadOptionsFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any request?: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2?: ( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ) => Promise; // tslint:disable-line:no-any requestOAuth1?( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface ICredentialTestFunctions extends ICredentialTestFunctionsBase { helpers: { request: requestPromise.RequestPromiseAPI; }; } export interface IHookFunctions extends IHookFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; // tslint:disable-line:no-any requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IWebhookFunctions extends IWebhookFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; // tslint:disable-line:no-any prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; // tslint:disable-line:no-any requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; // tslint:disable-line:no-any requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions, ): Promise; // tslint:disable-line:no-any returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IWorkflowSettings extends IWorkflowSettingsWorkflow { errorWorkflow?: string; timezone?: string; saveManualRuns?: boolean; } // New node definition in file export interface INodeDefinitionFile { [key: string]: Constructable; } // Is identical to TaskDataConnections but does not allow null value to be used as input for nodes export interface INodeInputDataConnections { [key: string]: INodeExecutionData[][]; } export interface IWorkflowData { pollResponses?: IPollResponse[]; triggerResponses?: ITriggerResponse[]; } export interface IBinaryDataConfig { mode: 'default' | 'filesystem'; availableModes: string; localStoragePath: string; binaryDataTTL: number; persistedBinaryDataTTL: number; } export interface IBinaryDataManager { init(startPurger: boolean): Promise; storeBinaryData(binaryBuffer: Buffer, executionId: string): Promise; retrieveBinaryDataByIdentifier(identifier: string): Promise; markDataForDeletionByExecutionId(executionId: string): Promise; deleteMarkedFiles(): Promise; deleteBinaryDataByIdentifier(identifier: string): Promise; duplicateBinaryDataByIdentifier(binaryDataId: string, prefix: string): Promise; deleteBinaryDataByExecutionId(executionId: string): Promise; persistBinaryDataForExecutionId(executionId: string): Promise; }