UNPKG

graphql-yoga

Version:
27 lines (26 loc) 1.29 kB
import { isAsyncIterable } from '@envelop/core'; import { getMediaTypesForRequestInOrder, isMatchingMediaType, } from './resultProcessor/accept.js'; export function useResultProcessors(resultProcessors) { return { onResultProcess({ request, result, acceptableMediaTypes, setResultProcessor, }) { const requestMediaTypes = getMediaTypesForRequestInOrder(request); for (const requestMediaType of requestMediaTypes) { for (const resultProcessorConfig of resultProcessors) { if (isAsyncIterable(result) && resultProcessorConfig.noAsyncIterable) { continue; } const processorMediaTypesInOrder = [ ...resultProcessorConfig.mediaTypes, ].reverse(); for (const processorMediaType of processorMediaTypesInOrder) { acceptableMediaTypes.push(processorMediaType); if (isMatchingMediaType(processorMediaType, requestMediaType)) { setResultProcessor(resultProcessorConfig.processResult, processorMediaType); } } } } }, }; }