From 97c5ce907ffc42d61e2eab0492babf1724a878ad Mon Sep 17 00:00:00 2001 From: Sanjar Mirakhmedov Date: Tue, 14 Oct 2025 14:43:35 +0500 Subject: [PATCH] feat: add withCredentials to request options --- packages/http/src/HTTP.spec.ts | 9 +++++++++ packages/http/src/HTTP.ts | 1 + packages/http/src/HTTPEndpoint.ts | 1 + 3 files changed, 11 insertions(+) diff --git a/packages/http/src/HTTP.spec.ts b/packages/http/src/HTTP.spec.ts index ee22d4f..124fd90 100644 --- a/packages/http/src/HTTP.spec.ts +++ b/packages/http/src/HTTP.spec.ts @@ -276,3 +276,12 @@ test('options.parseJSON', async () => { expect(parseJSON).toHaveBeenCalledTimes(2); }); + +test('options.withCredentials', async () => { + const { request } = createHTTP(); + + const response = await request('GET /users', { withCredentials: true }); + await expect(response.json()).resolves.toMatchObject({ + init: { credentials: 'include' }, + }); +}); diff --git a/packages/http/src/HTTP.ts b/packages/http/src/HTTP.ts index 5f3f806..6f40d3a 100644 --- a/packages/http/src/HTTP.ts +++ b/packages/http/src/HTTP.ts @@ -67,6 +67,7 @@ export function createHTTP({ if (fetcher == null) fetcher = fetch; if (signal) requestInit.signal = signal; + if (options.withCredentials) requestInit.credentials = 'include'; if (endpoint.body != null) requestInit.body = endpoint.body; return fetcher(endpoint.url, requestInit).then((response) => { diff --git a/packages/http/src/HTTPEndpoint.ts b/packages/http/src/HTTPEndpoint.ts index a07f60e..19fd1e0 100644 --- a/packages/http/src/HTTPEndpoint.ts +++ b/packages/http/src/HTTPEndpoint.ts @@ -27,6 +27,7 @@ export interface HTTPEndpointOptions { body?: BodyInit; baseURL?: string; headers?: Record; + withCredentials?: boolean; } export type HTTPEndpointTemplate = `${HTTPEndpointMethod} /${string}`;