From 96109da988b15bb71bb88ec6107f131538b2e79b Mon Sep 17 00:00:00 2001 From: Jim Burbridge Date: Mon, 1 Sep 2025 19:56:27 -0700 Subject: [PATCH] fix(arktype-utils): Adjusts bad values to stop mangling names --- .changeset/angry-pots-cross.md | 5 +++++ packages/arktype-utils/CHANGELOG.md | 14 +++++++------- packages/arktype-utils/package.json | 2 +- packages/arktype-utils/src/formData.ts | 3 ++- 4 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 .changeset/angry-pots-cross.md diff --git a/.changeset/angry-pots-cross.md b/.changeset/angry-pots-cross.md new file mode 100644 index 0000000..2a3a21e --- /dev/null +++ b/.changeset/angry-pots-cross.md @@ -0,0 +1,5 @@ +--- +"@jhecht/arktype-utils": patch +--- + +Fixes faulty logic in parse key causing names to only be the first character. diff --git a/packages/arktype-utils/CHANGELOG.md b/packages/arktype-utils/CHANGELOG.md index ba8f5bc..b09614d 100644 --- a/packages/arktype-utils/CHANGELOG.md +++ b/packages/arktype-utils/CHANGELOG.md @@ -13,17 +13,17 @@ ```ts // Test nested objects with dot notation const fd = new FormData(); - fd.append("payments.id1.location", "England"); - fd.append("payments.id1.age", "37"); - fd.append("payments.id2.location", "New York"); + fd.append('payments.id1.location', 'England'); + fd.append('payments.id1.age', '37'); + fd.append('payments.id2.location', 'New York'); const obj = formDataToObject(fd); // Test nested arrays with bracket notation const fd2 = new FormData(); - fd2.append("locations[].name", "England"); - fd2.append("locations[].members[]", "John"); - fd2.append("locations[].members[]", "Joe"); - fd2.append("locations[].name", "France"); + fd2.append('locations[].name', 'England'); + fd2.append('locations[].members[]', 'John'); + fd2.append('locations[].members[]', 'Joe'); + fd2.append('locations[].name', 'France'); const obj2 = formDataToObject(fd2); ``` diff --git a/packages/arktype-utils/package.json b/packages/arktype-utils/package.json index 4206387..acbb4fd 100644 --- a/packages/arktype-utils/package.json +++ b/packages/arktype-utils/package.json @@ -11,7 +11,7 @@ }, "scripts": { "test": "vitest --coverage", - "test:ci": "vitest run --coverage --changed", + "test:ci": "vitest run --coverage", "build": "tsup src/index.ts --format cjs,esm --dts", "lint": "eslint src/**/*.ts", "prepublishOnly": "pnpm run build" diff --git a/packages/arktype-utils/src/formData.ts b/packages/arktype-utils/src/formData.ts index c7992e9..948b8a1 100644 --- a/packages/arktype-utils/src/formData.ts +++ b/packages/arktype-utils/src/formData.ts @@ -57,7 +57,8 @@ function parseKeyPath(key: string): (string | number)[] { let buffer = ''; let inBracket = false; for (let i = 0; i < key.length; i++) { - const [char] = key; + // eslint-disable-next-line @jhecht/prefer-destructuring + const char = key[i]; if (char === '[') { if (buffer) { path.push(buffer);