UNPKG

@graphql-tools/delegate

Version:

A set of utils for faster development of GraphQL tools

34 lines (33 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDelegationInfo = exports.isDelegationDebugging = exports.contextIdMap = exports.delegationPlanInfosByContext = exports.logFnForContext = exports.delegationStageIdMap = exports.delegationPlanIdMap = void 0; const graphql_1 = require("graphql"); const utils_1 = require("@graphql-tools/utils"); exports.delegationPlanIdMap = new WeakMap(); exports.delegationStageIdMap = new WeakMap(); exports.logFnForContext = new WeakMap(); exports.delegationPlanInfosByContext = new WeakMap(); exports.contextIdMap = new WeakMap(); function isDelegationDebugging() { return globalThis.process?.env['EXPOSE_DELEGATION_PLAN']; } exports.isDelegationDebugging = isDelegationDebugging; exports.getDelegationInfo = (0, utils_1.memoize2of5)(function getDelegationInfo(context, delegationMaps, mergedTypeInfo, sourceSubschema, info) { return { contextId: exports.contextIdMap.get(context), operationName: info.operation.name?.value, planId: exports.delegationPlanIdMap.get(delegationMaps), source: sourceSubschema.name, type: mergedTypeInfo.typeName, path: (0, graphql_1.responsePathAsArray)(info.path).filter(key => typeof key === 'string'), fieldNodes: info.fieldNodes?.map(graphql_1.print), fragments: Object.values(info.fragments || {}).map(fragmentNode => `${(0, graphql_1.print)(fragmentNode)}`), stages: delegationMaps.map(delegationMap => ({ stageId: exports.delegationStageIdMap.get(delegationMap), delegations: Array.from(delegationMap).map(([subschema, selectionSet]) => ({ target: subschema.name, selectionSet: (0, graphql_1.print)(selectionSet), })), })), }; });