synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
85 lines (84 loc) • 3.33 kB
TypeScript
import { ResponseFormat, RetryConfig } from './api.interface';
/**
* Тип для функции отписки от событий
*/
export type Unsubscribe = VoidFunction;
/**
* Опции для выполнения запроса
*/
export interface QueryOptions {
/** Отключить кэширование для этого запроса */
disableCache?: boolean;
/** Signal для отмены запроса */
signal?: AbortSignal;
/** Таймаут в миллисекундах (переопределяет глобальный) */
timeout?: number;
/** Дополнительные заголовки */
headers?: Headers;
/** Пользовательский контекст */
context?: Record<string, any>;
/** Ключи заголовков, влияющие на кэш (для конкретного запроса) */
cacheableHeaderKeys?: string[];
/** Формат ответа (переопределяет формат из RequestDefinition) */
responseFormat?: ResponseFormat;
/** Название файла при скачивании (переопределяет fileName из RequestDefinition) */
fileName?: string;
/** Тип файла при скачивании (переопределяет fileType из RequestDefinition) */
fileType?: string;
/** Автоматически скачать файл после получения */
downloadFile?: boolean;
/** Конфигурация retry для этого запроса (переопределяет эндпоинт и глобальную) */
retry?: RetryConfig;
}
/**
* Метаданные для файла
*/
export interface FileMetadata {
/** Имя файла */
fileName: string;
/** Тип файла (MIME-тип) */
fileType: string;
/** Размер файла в байтах */
size?: number;
/** Дата создания файла */
createdAt?: Date | string;
/** Дата изменения файла */
updatedAt?: Date | string;
}
/**
* Результат скачивания файла
*/
export interface FileDownloadResult<T = Blob | ArrayBuffer> {
/** Данные файла */
data: T;
/** Метаданные файла */
metadata: FileMetadata;
/** HTTP-статус */
status: number;
/** Текст статуса */
statusText: string;
/** Заголовки ответа */
headers: Headers;
/** Успешна ли загрузка */
ok: boolean;
}
/**
* Результат выполнения запроса
*/
export interface QueryResult<T = any, E = Error> {
/** Данные ответа (при успешном запросе) */
data?: T;
/** Ошибка (при неуспешном запросе) */
error?: E;
/** Флаг успешности запроса */
ok: boolean;
/** HTTP-статус */
status: number;
/** Текстовое описание статуса */
statusText: string;
/** Заголовки ответа */
headers: Headers;
/** Результат скачивания файла (если responseFormat - Blob или ArrayBuffer) */
fileDownloadResult?: FileDownloadResult;
fromCache?: boolean;
}