UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

29 lines (28 loc) 2.16 kB
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>>;