n8n/packages/cli/src/Interfaces.ts

353 lines
7.5 KiB
TypeScript
Raw Normal View History

2019-06-23 03:35:23 -07:00
import {
ICredentialsDecrypted,
ICredentialsEncrypted,
IDataObject,
IExecutionError,
IRun,
IRunData,
2019-06-23 03:35:23 -07:00
IRunExecutionData,
ITaskData,
2019-12-19 14:07:55 -08:00
IWorkflowBase as IWorkflowBaseWorkflow,
IWorkflowCredentials,
2019-06-23 03:35:23 -07:00
WorkflowExecuteMode,
} from 'n8n-workflow';
import {
IDeferredPromise,
} from 'n8n-core';
2019-06-23 03:35:23 -07:00
import * as PCancelable from 'p-cancelable';
import { ObjectID, Repository } from 'typeorm';
import { ChildProcess } from 'child_process';
2019-06-23 03:35:23 -07:00
import { Url } from 'url';
import { Request } from 'express';
export interface IActivationError {
time: number;
error: {
message: string;
};
}
export interface ICustomRequest extends Request {
parsedUrl: Url | undefined;
}
export interface IDatabaseCollections {
Credentials: Repository<ICredentialsDb> | null;
Execution: Repository<IExecutionFlattedDb> | null;
Workflow: Repository<IWorkflowDb> | null;
}
2019-12-19 14:07:55 -08:00
export interface IWorkflowBase extends IWorkflowBaseWorkflow {
2019-06-23 03:35:23 -07:00
id?: number | string | ObjectID;
2019-12-19 14:07:55 -08:00
2019-06-23 03:35:23 -07:00
}
// Almost identical to editor-ui.Interfaces.ts
export interface IWorkflowDb extends IWorkflowBase {
id: number | string | ObjectID;
}
export interface IWorkflowResponse extends IWorkflowBase {
id: string;
}
export interface IWorkflowShortResponse {
id: string;
name: string;
active: boolean;
createdAt: Date;
updatedAt: Date;
2019-06-23 03:35:23 -07:00
}
export interface ICredentialsBase {
createdAt: Date;
updatedAt: Date;
2019-06-23 03:35:23 -07:00
}
export interface ICredentialsDb extends ICredentialsBase, ICredentialsEncrypted{
id: number | string | ObjectID;
}
export interface ICredentialsResponse extends ICredentialsDb {
id: string;
}
export interface ICredentialsDecryptedDb extends ICredentialsBase, ICredentialsDecrypted {
id: number | string | ObjectID;
}
export interface ICredentialsDecryptedResponse extends ICredentialsDecryptedDb {
id: string;
}
export type DatabaseType = 'mongodb' | 'postgresdb' | 'mysqldb' | 'sqlite';
export type SaveExecutionDataType = 'all' | 'none';
2019-06-23 03:35:23 -07:00
export interface IExecutionBase {
id?: number | string | ObjectID;
mode: WorkflowExecuteMode;
startedAt: Date;
stoppedAt: Date;
2019-06-23 03:35:23 -07:00
workflowId?: string; // To be able to filter executions easily //
finished: boolean;
retryOf?: number | string | ObjectID; // If it is a retry, the id of the execution it is a retry of.
retrySuccessId?: number | string | ObjectID; // If it failed and a retry did succeed. The id of the successful retry.
}
// Data in regular format with references
export interface IExecutionDb extends IExecutionBase {
data: IRunExecutionData;
workflowData?: IWorkflowBase;
}
export interface IExecutionPushResponse {
executionId?: string;
waitingForWebhook?: boolean;
}
export interface IExecutionResponse extends IExecutionBase {
id: string;
data: IRunExecutionData;
retryOf?: string;
retrySuccessId?: string;
workflowData: IWorkflowBase;
}
// Flatted data to save memory when saving in database or transfering
// via REST API
export interface IExecutionFlatted extends IExecutionBase {
data: string;
workflowData: IWorkflowBase;
}
export interface IExecutionFlattedDb extends IExecutionBase {
id: number | string | ObjectID;
data: string;
workflowData: IWorkflowBase;
}
export interface IExecutionFlattedResponse extends IExecutionFlatted {
id: string;
retryOf?: string;
}
export interface IExecutionsListResponse {
count: number;
// results: IExecutionShortResponse[];
results: IExecutionsSummary[];
}
export interface IExecutionsStopData {
finished?: boolean;
mode: WorkflowExecuteMode;
startedAt: Date;
stoppedAt: Date;
2019-06-23 03:35:23 -07:00
}
export interface IExecutionsSummary {
id?: string; // executionIdDb
idActive?: string; // executionIdActive
2019-06-23 03:35:23 -07:00
finished?: boolean;
2019-08-08 22:37:10 -07:00
mode: WorkflowExecuteMode;
2019-06-23 03:35:23 -07:00
retryOf?: string;
retrySuccessId?: string;
startedAt: Date;
stoppedAt?: Date;
2019-06-23 03:35:23 -07:00
workflowId: string;
workflowName?: string;
}
2019-08-08 22:37:10 -07:00
export interface IExecutionsCurrentSummary {
id: string;
retryOf?: string;
startedAt: Date;
mode: WorkflowExecuteMode;
workflowId: string;
}
2019-06-23 03:35:23 -07:00
export interface IExecutionDeleteFilter {
deleteBefore?: Date;
2019-06-23 03:35:23 -07:00
filters?: IDataObject;
ids?: string[];
}
export interface IExecutingWorkflowData {
executionData: IWorkflowExecutionDataProcess;
process?: ChildProcess;
startedAt: Date;
postExecutePromises: Array<IDeferredPromise<IRun | undefined>>;
workflowExecution?: PCancelable<IRun>;
}
2019-06-23 03:35:23 -07:00
export interface IN8nConfig {
database: IN8nConfigDatabase;
endpoints: IN8nConfigEndpoints;
executions: IN8nConfigExecutions;
generic: IN8nConfigGeneric;
host: string;
nodes: IN8nConfigNodes;
port: number;
protocol: 'http' | 'https';
2019-06-23 03:35:23 -07:00
}
export interface IN8nConfigDatabase {
type: DatabaseType;
mongodb: {
connectionUrl: string;
2019-06-23 03:35:23 -07:00
};
postgresdb: {
host: string;
password: string;
port: number;
user: string;
};
2019-06-23 03:35:23 -07:00
}
export interface IN8nConfigEndpoints {
rest: string;
webhook: string;
webhookTest: string;
}
export interface IN8nConfigExecutions {
saveDataOnError: SaveExecutionDataType;
saveDataOnSuccess: SaveExecutionDataType;
saveDataManualExecutions: boolean;
}
export interface IN8nConfigExecutions {
saveDataOnError: SaveExecutionDataType;
saveDataOnSuccess: SaveExecutionDataType;
saveDataManualExecutions: boolean;
}
export interface IN8nConfigGeneric {
timezone: string;
}
2019-06-23 03:35:23 -07:00
export interface IN8nConfigNodes {
errorTriggerType: string;
exclude: string[];
2019-06-23 03:35:23 -07:00
}
export interface IN8nUISettings {
endpointWebhook: string;
endpointWebhookTest: string;
saveDataErrorExecution: string;
saveDataSuccessExecution: string;
saveManualExecutions: boolean;
2019-06-23 03:35:23 -07:00
timezone: string;
urlBaseWebhook: string;
versionCli: string;
}
export interface IPackageVersions {
cli: string;
2019-06-23 03:35:23 -07:00
}
export interface IPushData {
data: IPushDataExecutionFinished | IPushDataNodeExecuteAfter | IPushDataNodeExecuteBefore | IPushDataTestWebhook;
type: IPushDataType;
}
export type IPushDataType = 'executionFinished' | 'executionStarted' | 'nodeExecuteAfter' | 'nodeExecuteBefore' | 'testWebhookDeleted' | 'testWebhookReceived';
2019-06-23 03:35:23 -07:00
export interface IPushDataExecutionFinished {
data: IRun;
executionIdActive: string;
executionIdDb?: string;
2019-08-08 22:37:10 -07:00
retryOf?: string;
2019-06-23 03:35:23 -07:00
}
export interface IPushDataExecutionStarted {
executionId: string;
mode: WorkflowExecuteMode;
startedAt: Date;
retryOf?: string;
workflowId: string;
workflowName?: string;
}
2019-06-23 03:35:23 -07:00
export interface IPushDataNodeExecuteAfter {
data: ITaskData;
executionId: string;
nodeName: string;
}
export interface IPushDataNodeExecuteBefore {
executionId: string;
nodeName: string;
}
export interface IPushDataTestWebhook {
executionId: string;
2019-06-23 03:35:23 -07:00
workflowId: string;
}
export interface IResponseCallbackData {
data?: IDataObject | IDataObject[];
noWebhookResponse?: boolean;
responseCode?: number;
2019-06-23 03:35:23 -07:00
}
export interface ITransferNodeTypes {
[key: string]: {
className: string;
sourcePath: string;
};
}
2019-06-23 03:35:23 -07:00
export interface IWorkflowErrorData {
[key: string]: IDataObject | string | number | IExecutionError;
execution: {
id?: string;
error: IExecutionError;
lastNodeExecuted: string;
mode: WorkflowExecuteMode;
};
workflow: {
id?: string;
name: string;
};
}
export interface IProcessMessageDataHook {
hook: string;
parameters: any[]; // tslint:disable-line:no-any
}
export interface IWorkflowExecutionDataProcess {
credentials: IWorkflowCredentials;
destinationNode?: string;
executionMode: WorkflowExecuteMode;
executionData?: IRunExecutionData;
runData?: IRunData;
retryOf?: number | string | ObjectID;
sessionId?: string;
startNodes?: string[];
workflowData: IWorkflowBase;
}
export interface IWorkflowExecutionDataProcessWithExecution extends IWorkflowExecutionDataProcess {
executionId: string;
nodeTypeData: ITransferNodeTypes;
}