From a4eb46acc178533e3c63fedcf0d884a5b66bae28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Wed, 26 Apr 2023 09:11:13 +0000 Subject: [PATCH] fix(core): Serialize dates and regexps when reading from augmented objects (#6086) https://community.n8n.io/t/workflows-fail-when-triggered-but-succeed-when-run-manually/25575 --- packages/workflow/src/AugmentObject.ts | 5 +++++ packages/workflow/test/AugmentObject.test.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/workflow/src/AugmentObject.ts b/packages/workflow/src/AugmentObject.ts index 80a80b905..b05e761a0 100644 --- a/packages/workflow/src/AugmentObject.ts +++ b/packages/workflow/src/AugmentObject.ts @@ -90,6 +90,11 @@ export function augmentObject(data: T): T { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const value = Reflect.get(target, key, receiver); + + if (typeof value !== 'object' || value === null) return value; + if (value instanceof RegExp) return value.toString(); + if ('toJSON' in value && typeof value.toJSON === 'function') return value.toJSON() as T; + const newValue = augment(value); if (newValue !== value) { Object.assign(newData, { [key]: newValue }); diff --git a/packages/workflow/test/AugmentObject.test.ts b/packages/workflow/test/AugmentObject.test.ts index e9fe6ee94..857114a10 100644 --- a/packages/workflow/test/AugmentObject.test.ts +++ b/packages/workflow/test/AugmentObject.test.ts @@ -233,8 +233,8 @@ describe('AugmentObject', () => { a: 9111, b: '9222', c: 3, - d: date, - r: regexp, + d: date.toJSON(), + r: regexp.toString(), }); });