UNPKG

synapse-storage

Version:

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

61 lines (54 loc) 3.01 kB
import { logError } from "../../_utils/error-handling.util.js"; import { createHeaderContext } from "./create-header-context.js"; /** * Подготавливает заголовки для запроса на основе контекста и пользовательских функций * * @param prepareHeadersFn - функция подготовки заголовков * @param context - контекст запроса * @returns - подготовленные заголовки */ async function prepareRequestHeaders(prepareHeadersFn, context) { // Создаем заголовки let headers = new Headers(); // Создаем контекст, если он не передан const headerContext = context || createHeaderContext({}, {}); // Применяем функцию подготовки заголовков, если она определена if (prepareHeadersFn) { try { headers = await Promise.resolve(prepareHeadersFn(headers, headerContext)); } catch (error) { logError('prepareRequestHeaders: error preparing headers', error, null, 'warn'); } } return headers; } /** * Создает комбинированную функцию для подготовки заголовков, объединяющую * глобальные заголовки и заголовки эндпоинта * * @param globalPrepareHeaders - функция подготовки заголовков на глобальном уровне * @param endpointPrepareHeaders - функция подготовки заголовков на уровне эндпоинта * @returns - функция для подготовки заголовков */ function createPrepareHeaders(globalPrepareHeaders, endpointPrepareHeaders) { return async (headers, context)=>{ let processedHeaders = new Headers(headers); // Применяем глобальную функцию подготовки заголовков, если она определена if (globalPrepareHeaders) { try { processedHeaders = await Promise.resolve(globalPrepareHeaders(processedHeaders, context)); } catch (error) { logError('createPrepareHeaders: error preparing global headers', error, null, 'warn'); } } // Применяем функцию подготовки заголовков эндпоинта, если она определена if (endpointPrepareHeaders) { try { processedHeaders = await Promise.resolve(endpointPrepareHeaders(processedHeaders, context)); } catch (error) { logError('createPrepareHeaders: error preparing endpoint headers', error, null, 'warn'); } } return processedHeaders; }; } export { createPrepareHeaders, prepareRequestHeaders }; //# sourceMappingURL=endpoint-headers.js.map