@graphql-tools/delegate
Version:
A set of utils for faster development of GraphQL tools
34 lines (33 loc) • 1.8 kB
JavaScript
;
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),
})),
})),
};
});