@graphql-mesh/serve-runtime
Version:
33 lines (32 loc) • 1.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProxyExecutor = getProxyExecutor;
const fusion_runtime_1 = require("@graphql-mesh/fusion-runtime");
function getProxyExecutor({ config, configContext, getSchema, onSubgraphExecuteHooks, disposableStack, }) {
const fakeTransportEntryMap = {};
let subgraphName = 'upstream';
const onSubgraphExecute = (0, fusion_runtime_1.getOnSubgraphExecute)({
onSubgraphExecuteHooks,
transportEntryMap: new Proxy(fakeTransportEntryMap, {
get(fakeTransportEntryMap, subgraphNameProp) {
if (!fakeTransportEntryMap[subgraphNameProp]) {
subgraphName = subgraphNameProp;
fakeTransportEntryMap[subgraphNameProp] = {
kind: 'http',
subgraph: subgraphName.toString(),
location: config.proxy?.endpoint,
headers: config.proxy?.headers,
options: config.proxy,
};
}
return fakeTransportEntryMap[subgraphNameProp];
},
}),
transportContext: configContext,
getSubgraphSchema: getSchema,
transportExecutorStack: disposableStack,
});
return function proxyExecutor(executionRequest) {
return onSubgraphExecute(subgraphName, executionRequest);
};
}
;