diff --git a/packages/better-fetch/src/create-fetch/types.ts b/packages/better-fetch/src/create-fetch/types.ts index 599036c..f06d221 100644 --- a/packages/better-fetch/src/create-fetch/types.ts +++ b/packages/better-fetch/src/create-fetch/types.ts @@ -83,7 +83,7 @@ export type InferHeaders = H extends StandardSchemaV1 : Record; export type IsFieldOptional = T extends StandardSchemaV1 - ? undefined extends T + ? undefined extends StandardSchemaV1.InferInput ? true : false : true; diff --git a/packages/better-fetch/src/test/create.test.ts b/packages/better-fetch/src/test/create.test.ts index 3c4dbe7..36c75a8 100644 --- a/packages/better-fetch/src/test/create.test.ts +++ b/packages/better-fetch/src/test/create.test.ts @@ -183,6 +183,28 @@ describe("create-fetch-runtime-test", () => { }); }); + it("applies a default query when options are omitted", async () => { + let requestQuery: unknown; + const fetch = createFetch({ + baseURL: "https://example.com", + schema: createSchema({ + "/movies": { + query: z + .object({ include: z.array(z.string()) }) + .default({ include: ["recommendations"] }), + }, + }), + customFetchImpl: async () => new Response(), + onRequest(context) { + requestQuery = context.query; + }, + }); + + await fetch("/movies"); + + expect(requestQuery).toEqual({ include: ["recommendations"] }); + }); + it("should validate response and return data if validation passes", async () => { const res = await $fetch("/echo", { output: z.object({