UNPKG

@graphql-mesh/serve-runtime

Version:
30 lines (29 loc) 1.3 kB
import { getOnSubgraphExecute } from '@graphql-mesh/fusion-runtime'; export function getProxyExecutor({ config, configContext, getSchema, onSubgraphExecuteHooks, disposableStack, }) { const fakeTransportEntryMap = {}; let subgraphName = 'upstream'; const onSubgraphExecute = 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); }; }