UNPKG

@dxtmisha/functional-basic

Version:

Core functional utility library for modern web development without framework dependencies

117 lines (116 loc) 5.44 kB
/** * Supported HTTP methods for API requests. * Поддерживаемые HTTP-методы для API-запросов. */ export declare enum ApiMethodItem { /** * HTTP GET — used to retrieve resources (no request body). * HTTP GET — используется для получения ресурсов (без тела запроса). */ get = "GET", /** * HTTP POST — used to create resources or send data. * HTTP POST — используется для создания ресурсов или отправки данных. */ post = "POST", /** * HTTP PUT — used to update/replace resources. * HTTP PUT — используется для обновления/замены ресурсов. */ put = "PUT", /** * HTTP DELETE — used to delete resources. * HTTP DELETE — используется для удаления ресурсов. */ delete = "DELETE" } /** * Supported HTTP methods type/ Тип HTTP-методов * (derived from ApiMethodItem enum)/ (получен из перечисления ApiMethodItem) */ export type ApiMethod = string & ApiMethodItem; /** * Options for making API requests/ Опции для выполнения API-запросов */ export type ApiFetch = { /** Use base API URL/ Использовать базовый URL API */ api?: boolean; /** Endpoint path relative to base URL/ Путь endpoint относительно базового URL */ path?: string; /** Complete URL (overrides api + path)/ Полный URL (переопределяет api + path) */ pathFull?: string; /** HTTP method/ HTTP метод */ method?: ApiMethod; /** Request body data or query parameters/ Данные тела запроса или параметры запроса */ request?: FormData | Record<string, any> | string; /** Include authentication headers/ Включить заголовки аутентификации */ auth?: boolean; /** Custom headers (null = no headers)/ Пользовательские заголовки (null = без заголовков) */ headers?: Record<string, string> | null; /** Content-Type header value/ Значение заголовка Content-Type */ type?: string; /** Extract 'data' field from response/ Извлечь поле 'data' из ответа */ toData?: boolean; /** Use global response cache/ Использовать глобальный кеш ответов */ global?: boolean; /** Enable development logging/ Включить логирование разработки */ devMode?: boolean; /** Suppress error logging/ Подавить логирование ошибок */ hideError?: boolean; /** Custom response processor/ Пользовательский процессор ответа */ queryReturn?: (query: Response) => Promise<any>; /** Run global preparation hooks/ Запускать глобальные хуки подготовки */ globalPreparation?: boolean; /** Run global end hooks/ Запускать глобальные хуки завершения */ globalEnd?: boolean; /** Additional fetch() options/ Дополнительные опции fetch() */ init?: RequestInit; }; /** * Mock API response descriptor/ Описание мок-ответа API */ export type ApiResponseItem = { /** Path string or RegExp to match request URL/ Путь или RegExp для сопоставления URL */ path: string | RegExp; /** Expected HTTP method/ Ожидаемый HTTP метод */ method: ApiMethod; /** Expected request payload or special marker '*any'/ Ожидаемая нагрузка запроса или маркер '*any' */ request?: ApiFetch['request'] | '*any'; /** Static response or factory function/ Статический ответ или функция, возвращающая ответ */ response: any | ((request?: ApiFetch['request']) => any); /** Disable this mock/ Отключить этот мок */ disable?: any; /** Mark as global mock/ Мок для глобального использования */ isForGlobal?: boolean; /** Simulate network lag/ Имитировать задержку */ lag?: any; }; /** * Shape of API response data wrapper/ Структура обёртки данных ответа API */ export type ApiData<T> = T & { /** Primary payload (optional)/ Основная полезная нагрузка (опционально) */ data?: T; /** Success flag/ Флаг успешности */ success?: boolean; }; /** * Result of global preparation/end hooks/ Результат глобальных хуков */ export type ApiPreparationEnd = { /** Reset flag to indicate state reset/ Флаг сброса состояния */ reset?: boolean; /** Arbitrary data returned by hook/ Произвольные данные, возвращаемые хуком */ data?: any; }; /** * Default API request data type/ Тип данных запроса API по умолчанию */ export type ApiDefaultValue = Record<string, any>; export type ApiStatusItem = { status?: number; statusText?: string; error?: string; lastResponse?: any; lastMessage?: string; };