UNPKG

@graphql-mesh/serve-runtime

Version:
42 lines (41 loc) 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getProxyExecutor = void 0; const fusion_runtime_1 = require("@graphql-mesh/fusion-runtime"); function getProxyExecutor(config, configContext, getSchema) { const fakeTransportEntryMap = {}; let subgraphName = 'upstream'; const onSubgraphExecute = (0, fusion_runtime_1.getOnSubgraphExecute)({ plugins: config.plugins?.(configContext), getFusiongraph: getSchema, transports() { if (typeof config.transport === 'object') { return config.transport; } if (typeof config.transport === 'function') { return config.transport(); } return (0, fusion_runtime_1.defaultTransportsOption)('http'); }, 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]; }, }), transportBaseContext: configContext, }); return function proxyExecutor(executionRequest) { return onSubgraphExecute(subgraphName, executionRequest.document, executionRequest.variables, executionRequest.context); }; } exports.getProxyExecutor = getProxyExecutor;