UNPKG

@graphql-mesh/serve-runtime

Version:
33 lines (32 loc) 1.43 kB
"use strict"; 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); }; }