synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
29 lines (28 loc) • 2.16 kB
TypeScript
import { FetchBaseQueryArgs, RequestDefinition } from '../types/api.interface';
import { QueryOptions, QueryResult } from '../types/query.interface';
/**
* Собирает абсолютный URL запроса из `path` и `baseUrl`.
*
* Важно: сохраняется поведение конкатенации (`baseUrl + path`), а не
* резолвинг через `new URL(path, baseUrl)`. Резолвинг отбросил бы префикс
* базы для абсолютных путей (например, `new URL('/api/x', 'http://host/_api')`
* даёт `http://host/api/x`, теряя `/_api`), что сломало бы проксирование.
*
* Покрываемые кейсы:
* - абсолютный `path` (`http(s)://...`) → используется как есть;
* - относительный `path` + абсолютный `baseUrl` → конкатенация даёт абсолютный URL;
* - относительный `path` + относительный `baseUrl` (браузер, напр. `/_api`) →
* результат резолвится относительно `window.location.origin`, чтобы
* `new URL(...)` не падал с `Invalid URL` (same-origin сохраняется).
*
* @param path Путь запроса
* @param baseUrl Базовый URL клиента (может быть абсолютным или относительным)
* @returns Готовый объект URL
*/
export declare function buildRequestUrl(path: string, baseUrl: string): URL;
/**
* Создает базовый fetch-клиент для запросов с поддержкой файлов
* @param options Настройки базового клиента
* @returns Функция для выполнения запросов
*/
export declare function fetchBaseQuery(options: Omit<FetchBaseQueryArgs, 'prepareHeaders'>): <RequestResult, RequestParams extends Record<string, any>, E extends Error = Error>(args: RequestDefinition<RequestParams>, queryOptions: QueryOptions | undefined, headers: Headers) => Promise<QueryResult<RequestResult, E>>;