n8n
Version:
n8n Workflow Automation Tool
76 lines (75 loc) • 3.61 kB
TypeScript
import type { FrontendSettings, UserUpdateRequestDto } from '@n8n/api-types';
import type { ClientOAuth2Options } from '@n8n/client-oauth2';
import { GlobalConfig } from '@n8n/config';
import { ErrorReporter, Logger } from 'n8n-core';
import type { IRun, IWorkflowBase, Workflow, WorkflowExecuteMode } from 'n8n-workflow';
import type clientOAuth1 from 'oauth-1.0a';
import type { AbstractServer } from './abstract-server';
import type { Config } from './config';
import type { TagEntity } from './databases/entities/tag-entity';
import type { User } from './databases/entities/user';
import { CredentialsRepository } from './databases/repositories/credentials.repository';
import { SettingsRepository } from './databases/repositories/settings.repository';
import { UserRepository } from './databases/repositories/user.repository';
import { WorkflowRepository } from './databases/repositories/workflow.repository';
import type { ICredentialsDb, PublicUser } from './interfaces';
type ExternalHooksMap = {
'n8n.ready': [server: AbstractServer, config: Config];
'n8n.stop': never;
'worker.ready': never;
'activeWorkflows.initialized': never;
'credentials.create': [encryptedData: ICredentialsDb];
'credentials.update': [newCredentialData: ICredentialsDb];
'credentials.delete': [credentialId: string];
'frontend.settings': [frontendSettings: FrontendSettings];
'mfa.beforeSetup': [user: User];
'oauth1.authenticate': [
oAuthOptions: clientOAuth1.Options,
oauthRequestData: {
oauth_callback: string;
}
];
'oauth2.authenticate': [oAuthOptions: ClientOAuth2Options];
'oauth2.callback': [oAuthOptions: ClientOAuth2Options];
'tag.beforeCreate': [tag: TagEntity];
'tag.afterCreate': [tag: TagEntity];
'tag.beforeUpdate': [tag: TagEntity];
'tag.afterUpdate': [tag: TagEntity];
'tag.beforeDelete': [tagId: string];
'tag.afterDelete': [tagId: string];
'user.deleted': [user: PublicUser];
'user.profile.beforeUpdate': [
userId: string,
currentEmail: string,
payload: UserUpdateRequestDto
];
'user.profile.update': [currentEmail: string, publicUser: PublicUser];
'user.password.update': [updatedEmail: string, updatedPassword: string];
'user.invited': [emails: string[]];
'workflow.create': [createdWorkflow: IWorkflowBase];
'workflow.afterCreate': [createdWorkflow: IWorkflowBase];
'workflow.activate': [updatedWorkflow: IWorkflowBase];
'workflow.update': [updatedWorkflow: IWorkflowBase];
'workflow.afterUpdate': [updatedWorkflow: IWorkflowBase];
'workflow.delete': [workflowId: string];
'workflow.afterDelete': [workflowId: string];
'workflow.preExecute': [workflow: Workflow, mode: WorkflowExecuteMode];
'workflow.postExecute': [
fullRunData: IRun | undefined,
workflowData: IWorkflowBase,
executionId: string
];
};
type HookNames = keyof ExternalHooksMap;
export declare class ExternalHooks {
private readonly logger;
private readonly errorReporter;
private readonly globalConfig;
private readonly registered;
private readonly dbCollections;
constructor(logger: Logger, errorReporter: ErrorReporter, globalConfig: GlobalConfig, userRepository: UserRepository, settingsRepository: SettingsRepository, credentialsRepository: CredentialsRepository, workflowRepository: WorkflowRepository);
init(): Promise<void>;
private loadHooks;
run<HookName extends HookNames>(hookName: HookName, hookParameters?: ExternalHooksMap[HookName]): Promise<void>;
}
export {};