From 46d4c4d32956c3fd7be93feffa7561d9e88bf3ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Mon, 5 Dec 2022 10:59:26 +0100 Subject: [PATCH] refactor(Code Node): Limit n8n item key check (#4737) :zap: Limit n8n item key check --- packages/nodes-base/nodes/Code/Sandbox.ts | 8 ++++---- packages/nodes-base/nodes/Code/utils.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/nodes-base/nodes/Code/Sandbox.ts b/packages/nodes-base/nodes/Code/Sandbox.ts index 3746c092b1..a3eb351e02 100644 --- a/packages/nodes-base/nodes/Code/Sandbox.ts +++ b/packages/nodes-base/nodes/Code/Sandbox.ts @@ -2,7 +2,7 @@ import { normalizeItems } from 'n8n-core'; import { NodeVM, NodeVMOptions } from 'vm2'; import { ValidationError } from './ValidationError'; import { ExecutionError } from './ExecutionError'; -import { CodeNodeMode, isObject, N8N_ITEM_KEYS } from './utils'; +import { CodeNodeMode, isObject, REQUIRED_N8N_ITEM_KEYS } from './utils'; import type { IExecuteFunctions, IWorkflowDataProxyData, WorkflowExecuteMode } from 'n8n-workflow'; @@ -104,7 +104,7 @@ export class Sandbox extends NodeVM { * item keys to be wrapped in `json` when normalizing items below. */ const mustHaveTopLevelN8nKey = executionResult.some((item) => - Object.keys(item).find((key) => N8N_ITEM_KEYS.has(key)), + Object.keys(item).find((key) => REQUIRED_N8N_ITEM_KEYS.has(key)), ); for (const item of executionResult) { @@ -118,7 +118,7 @@ export class Sandbox extends NodeVM { if (mustHaveTopLevelN8nKey) { Object.keys(item).forEach((key) => { - if (N8N_ITEM_KEYS.has(key)) return; + if (REQUIRED_N8N_ITEM_KEYS.has(key)) return; throw new ValidationError({ message: `Unknown top-level item key: ${key}`, description: 'Access the properties of an item under `.json`, e.g. `item.json`', @@ -226,7 +226,7 @@ export class Sandbox extends NodeVM { // directly on the item, when they intended to add it on the `json` property Object.keys(executionResult).forEach((key) => { - if (N8N_ITEM_KEYS.has(key)) return; + if (REQUIRED_N8N_ITEM_KEYS.has(key)) return; throw new ValidationError({ message: `Unknown top-level item key: ${key}`, diff --git a/packages/nodes-base/nodes/Code/utils.ts b/packages/nodes-base/nodes/Code/utils.ts index ffbfe31ea1..2e80249629 100644 --- a/packages/nodes-base/nodes/Code/utils.ts +++ b/packages/nodes-base/nodes/Code/utils.ts @@ -26,4 +26,4 @@ function isTraversable(maybe: unknown): maybe is IDataObject { export type CodeNodeMode = 'runOnceForAllItems' | 'runOnceForEachItem'; -export const N8N_ITEM_KEYS = new Set(['json', 'binary', 'error', 'pairedItem', 'index']); +export const REQUIRED_N8N_ITEM_KEYS = new Set(['json', 'binary']);