From 67aaad15eb55011e9b122254ea21e8339d153d8f 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: Thu, 7 Sep 2023 15:07:32 +0200 Subject: [PATCH] refactor(core): Use a Set for `deletedProperties` in `AugmentObject` (no-changelog) (#7131) --- packages/workflow/src/AugmentObject.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/workflow/src/AugmentObject.ts b/packages/workflow/src/AugmentObject.ts index 01e6f03ec..708bfd847 100644 --- a/packages/workflow/src/AugmentObject.ts +++ b/packages/workflow/src/AugmentObject.ts @@ -76,11 +76,11 @@ export function augmentObject(data: T): T { if (augmentedObjects.has(data)) return data; const newData = {} as IDataObject; - const deletedProperties: Array = []; + const deletedProperties = new Set(); const proxy = new Proxy(data, { get(target, key: string, receiver): unknown { - if (deletedProperties.indexOf(key) !== -1) { + if (deletedProperties.has(key)) { return undefined; } @@ -107,7 +107,7 @@ export function augmentObject(data: T): T { delete newData[key]; } if (key in target) { - deletedProperties.push(key); + deletedProperties.add(key); } return true; @@ -118,34 +118,33 @@ export function augmentObject(data: T): T { delete newData[key]; } if (key in target) { - deletedProperties.push(key); + deletedProperties.add(key); } return true; } newData[key] = newValue as IDataObject; - const deleteIndex = deletedProperties.indexOf(key); - if (deleteIndex !== -1) { - deletedProperties.splice(deleteIndex, 1); + if (deletedProperties.has(key)) { + deletedProperties.delete(key); } return true; }, has(target, key) { - if (deletedProperties.indexOf(key) !== -1) return false; + if (deletedProperties.has(key)) return false; return Reflect.has(newData, key) || Reflect.has(target, key); }, ownKeys(target) { const originalKeys = Reflect.ownKeys(target); const newKeys = Object.keys(newData); return [...new Set([...originalKeys, ...newKeys])].filter( - (key) => deletedProperties.indexOf(key) === -1, + (key) => !deletedProperties.has(key), ); }, getOwnPropertyDescriptor(target, key) { - if (deletedProperties.indexOf(key) !== -1) return undefined; + if (deletedProperties.has(key)) return undefined; return Object.getOwnPropertyDescriptor(key in newData ? newData : data, key); }, });