UNPKG

@graphql-mesh/fusion-composition

Version:

Basic composition utility for Fusion spec

45 lines (44 loc) 2.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDirectiveExtensions = void 0; const graphql_1 = require("graphql"); function getDirectiveExtensions(directableObj) { const directiveExtensions = {}; if (directableObj.astNode?.directives?.length) { directableObj.astNode.directives.forEach(directive => { let existingDirectiveExtensions = directiveExtensions[directive.name.value]; if (!existingDirectiveExtensions) { existingDirectiveExtensions = []; directiveExtensions[directive.name.value] = existingDirectiveExtensions; } existingDirectiveExtensions.push(directive.arguments ? Object.fromEntries(directive.arguments.map(arg => [arg.name.value, (0, graphql_1.valueFromASTUntyped)(arg.value)])) : {}); }); } if (directableObj.extensions?.directives) { for (const directiveName in directableObj.extensions.directives) { const directiveObjs = directableObj.extensions.directives[directiveName]; if (Array.isArray(directiveObjs)) { directiveObjs.forEach(directiveObj => { let existingDirectiveExtensions = directiveExtensions[directiveName]; if (!existingDirectiveExtensions) { existingDirectiveExtensions = []; directiveExtensions[directiveName] = existingDirectiveExtensions; } existingDirectiveExtensions.push(directiveObj); }); } else { let existingDirectiveExtensions = directiveExtensions[directiveName]; if (!existingDirectiveExtensions) { existingDirectiveExtensions = []; directiveExtensions[directiveName] = existingDirectiveExtensions; } existingDirectiveExtensions.push(directiveObjs); } } } return directiveExtensions; } exports.getDirectiveExtensions = getDirectiveExtensions;