mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
refactor(core): Simplify createDeferredPromise, and add tests (no-changelog) (#10811)
This commit is contained in:
committed by
GitHub
parent
d647ef41ac
commit
cef64329a9
@@ -208,11 +208,11 @@ export class AmqpTrigger implements INodeType {
|
||||
|
||||
let responsePromise: IDeferredPromise<IRun> | undefined = undefined;
|
||||
if (!parallelProcessing) {
|
||||
responsePromise = await this.helpers.createDeferredPromise();
|
||||
responsePromise = this.helpers.createDeferredPromise();
|
||||
}
|
||||
if (responsePromise) {
|
||||
this.emit([this.helpers.returnJsonArray([data as any])], undefined, responsePromise);
|
||||
await responsePromise.promise();
|
||||
await responsePromise.promise;
|
||||
} else {
|
||||
this.emit([this.helpers.returnJsonArray([data as any])]);
|
||||
}
|
||||
|
||||
@@ -507,7 +507,7 @@ export class EmailReadImapV1 implements INodeType {
|
||||
return newEmails;
|
||||
};
|
||||
|
||||
const returnedPromise = await this.helpers.createDeferredPromise();
|
||||
const returnedPromise = this.helpers.createDeferredPromise();
|
||||
|
||||
const establishConnection = async (): Promise<ImapSimple> => {
|
||||
let searchCriteria = ['UNSEEN'] as Array<string | string[]>;
|
||||
@@ -560,7 +560,7 @@ export class EmailReadImapV1 implements INodeType {
|
||||
});
|
||||
// Wait with resolving till the returnedPromise got resolved, else n8n will be unhappy
|
||||
// if it receives an error before the workflow got activated
|
||||
await returnedPromise.promise().then(() => {
|
||||
await returnedPromise.promise.then(() => {
|
||||
this.emitError(error as Error);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -535,7 +535,7 @@ export class EmailReadImapV2 implements INodeType {
|
||||
return newEmails;
|
||||
};
|
||||
|
||||
const returnedPromise = await this.helpers.createDeferredPromise();
|
||||
const returnedPromise = this.helpers.createDeferredPromise();
|
||||
|
||||
const establishConnection = async (): Promise<ImapSimple> => {
|
||||
let searchCriteria = ['UNSEEN'] as Array<string | string[]>;
|
||||
@@ -590,7 +590,7 @@ export class EmailReadImapV2 implements INodeType {
|
||||
});
|
||||
// Wait with resolving till the returnedPromise got resolved, else n8n will be unhappy
|
||||
// if it receives an error before the workflow got activated
|
||||
await returnedPromise.promise().then(() => {
|
||||
await returnedPromise.promise.then(() => {
|
||||
this.emitError(error as Error);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import type {
|
||||
ITriggerResponse,
|
||||
IRun,
|
||||
} from 'n8n-workflow';
|
||||
import { createDeferredPromise, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||
|
||||
export class KafkaTrigger implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
@@ -281,13 +281,13 @@ export class KafkaTrigger implements INodeType {
|
||||
}
|
||||
let responsePromise = undefined;
|
||||
if (!parallelProcessing && (options.nodeVersion as number) > 1) {
|
||||
responsePromise = await createDeferredPromise<IRun>();
|
||||
responsePromise = this.helpers.createDeferredPromise<IRun>();
|
||||
this.emit([this.helpers.returnJsonArray([data])], undefined, responsePromise);
|
||||
} else {
|
||||
this.emit([this.helpers.returnJsonArray([data])]);
|
||||
}
|
||||
if (responsePromise) {
|
||||
await responsePromise.promise();
|
||||
await responsePromise.promise;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -140,11 +140,11 @@ export class MqttTrigger implements INodeType {
|
||||
|
||||
if (this.getMode() === 'trigger') {
|
||||
const donePromise = !options.parallelProcessing
|
||||
? await this.helpers.createDeferredPromise<IRun>()
|
||||
? this.helpers.createDeferredPromise<IRun>()
|
||||
: undefined;
|
||||
client.on('message', async (topic, payload) => {
|
||||
this.emit(parsePayload(topic, payload), undefined, donePromise);
|
||||
await donePromise?.promise();
|
||||
await donePromise?.promise;
|
||||
});
|
||||
await client.subscribeAsync(topicsQoS);
|
||||
}
|
||||
|
||||
@@ -283,10 +283,9 @@ export class RabbitMQTrigger implements INodeType {
|
||||
let responsePromiseHook: IDeferredPromise<IExecuteResponsePromiseData> | undefined =
|
||||
undefined;
|
||||
if (acknowledgeMode !== 'immediately' && acknowledgeMode !== 'laterMessageNode') {
|
||||
responsePromise = await this.helpers.createDeferredPromise();
|
||||
responsePromise = this.helpers.createDeferredPromise();
|
||||
} else if (acknowledgeMode === 'laterMessageNode') {
|
||||
responsePromiseHook =
|
||||
await this.helpers.createDeferredPromise<IExecuteResponsePromiseData>();
|
||||
responsePromiseHook = this.helpers.createDeferredPromise<IExecuteResponsePromiseData>();
|
||||
}
|
||||
if (responsePromiseHook) {
|
||||
this.emit([[item]], responsePromiseHook, undefined);
|
||||
@@ -295,7 +294,7 @@ export class RabbitMQTrigger implements INodeType {
|
||||
}
|
||||
if (responsePromise && acknowledgeMode !== 'laterMessageNode') {
|
||||
// Acknowledge message after the execution finished
|
||||
await responsePromise.promise().then(async (data: IRun) => {
|
||||
await responsePromise.promise.then(async (data: IRun) => {
|
||||
if (data.data.resultData.error) {
|
||||
// The execution did fail
|
||||
if (acknowledgeMode === 'executionFinishesSuccessfully') {
|
||||
@@ -308,7 +307,7 @@ export class RabbitMQTrigger implements INodeType {
|
||||
messageTracker.answered(message);
|
||||
});
|
||||
} else if (responsePromiseHook && acknowledgeMode === 'laterMessageNode') {
|
||||
await responsePromiseHook.promise().then(() => {
|
||||
await responsePromiseHook.promise.then(() => {
|
||||
channel.ack(message);
|
||||
messageTracker.answered(message);
|
||||
});
|
||||
|
||||
@@ -22,7 +22,7 @@ export async function executeWorkflow(testData: WorkflowTestData, nodeTypes: INo
|
||||
nodeTypes,
|
||||
settings: testData.input.workflowData.settings,
|
||||
});
|
||||
const waitPromise = await createDeferredPromise<IRun>();
|
||||
const waitPromise = createDeferredPromise<IRun>();
|
||||
const nodeExecutionOrder: string[] = [];
|
||||
const additionalData = Helpers.WorkflowExecuteAdditionalData(waitPromise, nodeExecutionOrder);
|
||||
|
||||
@@ -50,6 +50,6 @@ export async function executeWorkflow(testData: WorkflowTestData, nodeTypes: INo
|
||||
const workflowExecute = new WorkflowExecute(additionalData, executionMode, runExecutionData);
|
||||
executionData = await workflowExecute.processRunExecutionData(workflowInstance);
|
||||
|
||||
const result = await waitPromise.promise();
|
||||
const result = await waitPromise.promise;
|
||||
return { executionData, result, nodeExecutionOrder };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user