UNPKG

@openapi-qraft/react

Version:

OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.

38 lines (35 loc) 2.29 kB
import { shelfMerge } from './lib/shelfMerge.js'; function qraftPredefinedParametersRequestFn(inputPredefinedParameters, targetPredefinedParameters, requestFn) { return function predefinedParametersRequestFn(schema, requestInfo, options) { const matchingInputPredefinedParameters = targetPredefinedParameters.flatMap((targetParameter)=>targetParameter.paths.includes(schema.url) && (!targetParameter.methods.length || targetParameter.methods.includes(schema.method)) ? inputPredefinedParameters.filter((predefinedParameter)=>predefinedParameter.requestPattern === targetParameter.requestPattern) : []); if (!matchingInputPredefinedParameters?.length) return requestFn(schema, requestInfo, options); return Promise.all(matchingInputPredefinedParameters.map((item)=>resolveQraftPredefinedParameters(item.parameters))).then((resolvedPredefinedParameters)=>{ const mergedParameters = resolvedPredefinedParameters.reduce((acc, item)=>{ acc = shelfMerge(2, acc, item); return acc; }, {}); return requestFn(schema, { ...requestInfo, parameters: shelfMerge(2, mergedParameters, requestInfo.parameters) }, options); }); }; } async function resolveQraftPredefinedParameters(predefinedParameters) { return Promise.all(predefinedParameters.map(async (predefinedParameter)=>{ return { ...predefinedParameter, value: await resolveQraftPredefinedParameterValue(predefinedParameter.value) }; })).then((resolvedPredefinedParameters)=>resolvedPredefinedParameters.filter((resolvedPredefinedParameter)=>resolvedPredefinedParameter.value !== undefined).reduce((acc, resolvedPredefinedParameter)=>{ acc[resolvedPredefinedParameter.in] = acc[resolvedPredefinedParameter.in] ?? {}; acc[resolvedPredefinedParameter.in][resolvedPredefinedParameter.name] = resolvedPredefinedParameter.value; return acc; }, {})); } async function resolveQraftPredefinedParameterValue(value) { if (value && typeof value === 'function') return await value(); return value; } export { qraftPredefinedParametersRequestFn }; //# sourceMappingURL=qraftPredefinedParametersRequestFn.js.map