From c44489088b81f5c6e7b3c253f7d751bd2939b462 Mon Sep 17 00:00:00 2001 From: Yevhenii Date: Wed, 25 Feb 2026 17:44:40 +0200 Subject: [PATCH] fix: support exactOptionalPropertyTypes and narrow duplex type Enable exactOptionalPropertyTypes in tsconfig so emitted .d.ts files don't expand optional properties with | undefined. Fix two code patterns in create-fetch that assign possibly-undefined values to optional properties. Narrow duplex from "full" | "half" to "half" per WHATWG Fetch spec. --- packages/better-fetch/src/create-fetch/index.ts | 8 ++++---- packages/better-fetch/src/types.ts | 2 +- packages/better-fetch/tsconfig.json | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/better-fetch/src/create-fetch/index.ts b/packages/better-fetch/src/create-fetch/index.ts index bbf80b3..96bdbde 100644 --- a/packages/better-fetch/src/create-fetch/index.ts +++ b/packages/better-fetch/src/create-fetch/index.ts @@ -95,9 +95,9 @@ export const applySchemaPlugin = (config: CreateFetchOption) => let opts = { ...options, - method: keySchema.method, - output: keySchema.output, - headers: validatedHeaders, + ...(keySchema.method != null ? { method: keySchema.method } : undefined), + ...(keySchema.output != null ? { output: keySchema.output } : undefined), + ...(validatedHeaders != null ? { headers: validatedHeaders } : undefined), }; if (!options?.disableValidation) { @@ -122,7 +122,7 @@ export const applySchemaPlugin = (config: CreateFetchOption) => } return { url, - options, + ...(options != null ? { options } : undefined), }; }, }) satisfies BetterFetchPlugin; diff --git a/packages/better-fetch/src/types.ts b/packages/better-fetch/src/types.ts index 320b027..e4166ea 100644 --- a/packages/better-fetch/src/types.ts +++ b/packages/better-fetch/src/types.ts @@ -93,7 +93,7 @@ export type BetterFetchOption< /** * Duplex mode */ - duplex?: "full" | "half"; + duplex?: "half"; /** * Custom JSON parser */ diff --git a/packages/better-fetch/tsconfig.json b/packages/better-fetch/tsconfig.json index 71ea3fd..5fd1e46 100644 --- a/packages/better-fetch/tsconfig.json +++ b/packages/better-fetch/tsconfig.json @@ -5,6 +5,7 @@ "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, "strict": true /* Enable all strict type-checking options. */, + "exactOptionalPropertyTypes": true, "noImplicitReturns": true /* Enable error reporting for codepaths that do not explicitly return in a function. */, "skipLibCheck": true /* Skip type checking all .d.ts files. */, "noEmit": true,