graphql-yoga
Version:
31 lines (30 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useResultProcessors = void 0;
const core_1 = require("@envelop/core");
const accept_js_1 = require("./resultProcessor/accept.js");
function useResultProcessors(resultProcessors) {
return {
onResultProcess({ request, result, acceptableMediaTypes, setResultProcessor, }) {
const requestMediaTypes = (0, accept_js_1.getMediaTypesForRequestInOrder)(request);
for (const requestMediaType of requestMediaTypes) {
for (const resultProcessorConfig of resultProcessors) {
if ((0, core_1.isAsyncIterable)(result) &&
resultProcessorConfig.noAsyncIterable) {
continue;
}
const processorMediaTypesInOrder = [
...resultProcessorConfig.mediaTypes,
].reverse();
for (const processorMediaType of processorMediaTypesInOrder) {
acceptableMediaTypes.push(processorMediaType);
if ((0, accept_js_1.isMatchingMediaType)(processorMediaType, requestMediaType)) {
setResultProcessor(resultProcessorConfig.processResult, processorMediaType);
}
}
}
}
},
};
}
exports.useResultProcessors = useResultProcessors;