From 4645d9f4e1149f454f868eee51154191f357911a Mon Sep 17 00:00:00 2001 From: 0zminDev <0zminDev@pm.me> Date: Wed, 15 Jul 2026 20:59:29 +0200 Subject: [PATCH] fix(types): correct FormData values()/entries() iterator types Fixes #27194 --- packages/bun-types/globals.d.ts | 5 +++-- test/integration/bun-types/bun-types.test.ts | 2 +- test/integration/bun-types/fixture/globals.ts | 10 +++++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/bun-types/globals.d.ts b/packages/bun-types/globals.d.ts index d88036b35841..217eadfb9518 100644 --- a/packages/bun-types/globals.d.ts +++ b/packages/bun-types/globals.d.ts @@ -1699,8 +1699,9 @@ interface FormData { set(name: string, blobValue: Blob, filename?: string): void; forEach(callbackfn: (value: Bun.FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void; keys(): IterableIterator; - values(): IterableIterator; - entries(): IterableIterator<[string, string]>; + values(): IterableIterator; + entries(): IterableIterator<[string, Bun.FormDataEntryValue]>; + [Symbol.iterator](): IterableIterator<[string, Bun.FormDataEntryValue]>; } declare var FormData: Bun.__internal.UseLibDomIfAvailable<"FormData", { prototype: FormData; new (): FormData }>; diff --git a/test/integration/bun-types/bun-types.test.ts b/test/integration/bun-types/bun-types.test.ts index 4538907db0d4..733c6430a268 100644 --- a/test/integration/bun-types/bun-types.test.ts +++ b/test/integration/bun-types/bun-types.test.ts @@ -640,7 +640,7 @@ describe("@types/bun integration test", () => { }, { code: 2353, - line: "globals.ts:307:5", + line: "globals.ts:311:5", message: "Object literal may only specify known properties, and 'headers' does not exist in type 'string[]'.", }, { diff --git a/test/integration/bun-types/fixture/globals.ts b/test/integration/bun-types/fixture/globals.ts index 0ca54f0153e1..287b8a16ea46 100644 --- a/test/integration/bun-types/fixture/globals.ts +++ b/test/integration/bun-types/fixture/globals.ts @@ -226,13 +226,17 @@ const writableStream = new WritableStream(); a.forEach((value, key) => { console.log(value, key); }); - a.entries(); + a.entries() satisfies IterableIterator<[string, string | File]>; a.get("asdf"); a.getAll("asdf"); a.has("asdf"); - a.keys(); - a.values(); + a.keys() satisfies IterableIterator; + a.values() satisfies IterableIterator; a.toString(); + for (const [key, value] of a) { + key satisfies string; + value satisfies string | File; + } } { const a = new Headers();