synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
61 lines (54 loc) • 3.01 kB
JavaScript
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