UNPKG

@graphql-mesh/fusion-runtime

Version:

Runtime for GraphQL Mesh Fusion Supergraph

39 lines (38 loc) 1.26 kB
import { isNamedType } from 'graphql'; import { getDirectiveExtensions, MapperKind, mapSchema, } from '@graphql-tools/utils'; function isHidden(directableObj) { const directiveExtensions = getDirectiveExtensions(directableObj); const hiddenDirectives = directiveExtensions?.hidden; return hiddenDirectives?.length; } export function filterHiddenPartsInSchema(schema) { return mapSchema(schema, { [MapperKind.TYPE](type) { if (isNamedType(type) && isHidden(type)) { return null; } }, [MapperKind.ROOT_OBJECT](type) { const fields = Object.values(type.getFields()); const availableFields = fields.filter(field => !isHidden(field)); if (!availableFields.length) { return null; } }, [MapperKind.ROOT_FIELD](fieldConfig) { if (isHidden(fieldConfig)) { return null; } }, [MapperKind.FIELD](fieldConfig) { if (isHidden(fieldConfig)) { return null; } }, [MapperKind.ARGUMENT](argConfig) { if (isHidden(argConfig)) { return null; } }, }); }