makeAuthenticatedFetch
@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
| Parameter | Type | Description |
|---|---|---|
opts | AuthFetchOptions | поставщик токена, генератор ключа и опциональный базовый fetch. |
Returns
функция с сигнатурой fetch, готовая к передаче в REST-клиент.
(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
Parameters
| Parameter | Type |
|---|---|
input | RequestInfo | URL |
init? | RequestInit |
Returns
Promise<Response>
(input: string | Request | URL, init?: RequestInit): Promise<Response>;
Parameters
| Parameter | Type |
|---|---|
input | string | Request | URL |
init? | RequestInit |
Returns
Promise<Response>
Example
const authedFetch = makeAuthenticatedFetch({
tokenProvider,
generateId: () => crypto.randomUUID(),
});
const client = createRestClient('https://api.mineflow.local', authedFetch);