From 95d44ad81c6074cb77c3555b8c39a5725443d2f8 Mon Sep 17 00:00:00 2001 From: Parbez Date: Sat, 2 Dec 2023 17:55:03 +0530 Subject: [PATCH 1/5] fix(builders): don't mutate user provided array --- packages/builders/src/util/normalizeArray.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builders/src/util/normalizeArray.ts b/packages/builders/src/util/normalizeArray.ts index 1ff485008f08..b1545caaf2ca 100644 --- a/packages/builders/src/util/normalizeArray.ts +++ b/packages/builders/src/util/normalizeArray.ts @@ -5,7 +5,7 @@ * @param arr - The (possibly variadic) data to normalize */ export function normalizeArray(arr: RestOrArray): ItemType[] { - if (Array.isArray(arr[0])) return arr[0]; + if (Array.isArray(arr[0])) return [...arr[0]]; return arr as ItemType[]; } From 022ada8036b442ab077be12b3077eaa8a3641f25 Mon Sep 17 00:00:00 2001 From: parbez Date: Sun, 3 Dec 2023 00:37:36 +0530 Subject: [PATCH 2/5] test: add normalize array tests --- .vscode/settings.json | 6 +++--- packages/builders/__tests__/util.test.ts | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 838be63d6465..7f5067db8d03 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,9 +9,9 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, "editor.codeActionsOnSave": { - "source.organizeImports": false, - "source.fixAll.eslint": true, - "source.fixAll": true + "source.organizeImports": "never", + "source.fixAll.eslint": "explicit", + "source.fixAll": "explicit" }, "editor.trimAutoWhitespace": false, "files.associations": { diff --git a/packages/builders/__tests__/util.test.ts b/packages/builders/__tests__/util.test.ts index 3e423a7ef44f..5781eed1b5b2 100644 --- a/packages/builders/__tests__/util.test.ts +++ b/packages/builders/__tests__/util.test.ts @@ -1,5 +1,5 @@ import { describe, test, expect } from 'vitest'; -import { enableValidators, disableValidators, isValidationEnabled } from '../src/index.js'; +import { enableValidators, disableValidators, isValidationEnabled, normalizeArray } from '../src/index.js'; describe('validation', () => { test('enables validation', () => { @@ -12,3 +12,18 @@ describe('validation', () => { expect(isValidationEnabled()).toBeFalsy(); }); }); + +describe('normalizeArray', () => { + test('normalizes an array or array (when input is an array)', () => { + expect(normalizeArray([[1, 2, 3]])).toEqual([1, 2, 3]); + }); + + test('normalizes an array (when input is rest parameter)', () => { + expect(normalizeArray([1, 2, 3])).toEqual([1, 2, 3]); + }); + + test('always returns a clone', () => { + const arr = [1, 2, 3]; + expect(normalizeArray([arr])).not.toBe(arr); + }); +}); From ff61597741725e669f4cfe5a0bb346dccc112231 Mon Sep 17 00:00:00 2001 From: parbez Date: Sun, 3 Dec 2023 00:45:40 +0530 Subject: [PATCH 3/5] chore: revert vscode autochange --- .vscode/settings.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 7f5067db8d03..838be63d6465 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,9 +9,9 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, "editor.codeActionsOnSave": { - "source.organizeImports": "never", - "source.fixAll.eslint": "explicit", - "source.fixAll": "explicit" + "source.organizeImports": false, + "source.fixAll.eslint": true, + "source.fixAll": true }, "editor.trimAutoWhitespace": false, "files.associations": { From 4003f2ad2498697d2aa08e1f53fb8ae7b0a3869f Mon Sep 17 00:00:00 2001 From: Vlad Frangu Date: Tue, 30 Apr 2024 22:59:10 +0300 Subject: [PATCH 4/5] Update util.test.ts --- packages/builders/__tests__/util.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/builders/__tests__/util.test.ts b/packages/builders/__tests__/util.test.ts index 5781eed1b5b2..1a90e3acf277 100644 --- a/packages/builders/__tests__/util.test.ts +++ b/packages/builders/__tests__/util.test.ts @@ -24,6 +24,7 @@ describe('normalizeArray', () => { test('always returns a clone', () => { const arr = [1, 2, 3]; + expect(normalizeArray([arr])).toEqual(arr); expect(normalizeArray([arr])).not.toBe(arr); }); }); From 63056d8bfe2d7a768a61d1091c9062c74463efbd Mon Sep 17 00:00:00 2001 From: Almeida Date: Tue, 30 Apr 2024 21:41:31 +0100 Subject: [PATCH 5/5] refactor: remove unnecessary clone --- .../builders/src/components/selectMenu/MentionableSelectMenu.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builders/src/components/selectMenu/MentionableSelectMenu.ts b/packages/builders/src/components/selectMenu/MentionableSelectMenu.ts index b577822e9e0a..2f5e71b7dba6 100644 --- a/packages/builders/src/components/selectMenu/MentionableSelectMenu.ts +++ b/packages/builders/src/components/selectMenu/MentionableSelectMenu.ts @@ -110,7 +110,7 @@ export class MentionableSelectMenuBuilder extends BaseSelectMenuBuilder