Перейти к основному содержимому

makeAuthenticatedFetch

@mineflow/client-core


@mineflow/client-core / makeAuthenticatedFetch

Function: makeAuthenticatedFetch()

function makeAuthenticatedFetch(opts: AuthFetchOptions): {
(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
(input: string | Request | URL, init?: RequestInit): Promise<Response>;
};

Defined in: packages/client-core/src/auth-fetch.ts:65

Собирает fetch-декоратор, который перед каждой отправкой добавляет Authorization: Bearer <token>, на write-методы (POST/PUT/PATCH/DELETE) ставит Idempotency-Key (ADR-0012), а на ответ 401 ровно один раз форсит refresh токена и повторяет запрос.

Возвращённую функцию обычно отдают в createRestClient/createClient как fetch, чтобы и REST, и SSE шли через один аутентифицированный путь.

Поведенческие нюансы:

  • Idempotency-Key генерируется, только если его нет ИЛИ он пуст; непустой ключ вызывающего сохраняется (retry-with-same-key).
  • на 401 ключ и тело переиспользуются (тело клонируется ДО первой отправки), т.к. это та же логическая операция — бэк дедуплицирует по ключу.
  • 403 и прочие коды НЕ ретраятся: refresh там не поможет.

Parameters

ParameterTypeDescription
optsAuthFetchOptionsпоставщик токена, генератор ключа и опциональный базовый fetch.

Returns

функция с сигнатурой fetch, готовая к передаче в REST-клиент.

(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;

MDN Reference

Parameters

ParameterType
inputRequestInfo | URL
init?RequestInit

Returns

Promise<Response>

(input: string | Request | URL, init?: RequestInit): Promise<Response>;

MDN Reference

Parameters

ParameterType
inputstring | Request | URL
init?RequestInit

Returns

Promise<Response>

Example

const authedFetch = makeAuthenticatedFetch({
tokenProvider,
generateId: () => crypto.randomUUID(),
});
const client = createRestClient('https://api.mineflow.local', authedFetch);