UNPKG

@graphql-mesh/fusion-runtime

Version:

Runtime for GraphQL Mesh Fusion Supergraph

42 lines (41 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.filterHiddenPartsInSchema = filterHiddenPartsInSchema; const graphql_1 = require("graphql"); const utils_1 = require("@graphql-tools/utils"); function isHidden(directableObj) { const directiveExtensions = (0, utils_1.getDirectiveExtensions)(directableObj); const hiddenDirectives = directiveExtensions?.hidden; return hiddenDirectives?.length; } function filterHiddenPartsInSchema(schema) { return (0, utils_1.mapSchema)(schema, { [utils_1.MapperKind.TYPE](type) { if ((0, graphql_1.isNamedType)(type) && isHidden(type)) { return null; } }, [utils_1.MapperKind.ROOT_OBJECT](type) { const fields = Object.values(type.getFields()); const availableFields = fields.filter(field => !isHidden(field)); if (!availableFields.length) { return null; } }, [utils_1.MapperKind.ROOT_FIELD](fieldConfig) { if (isHidden(fieldConfig)) { return null; } }, [utils_1.MapperKind.FIELD](fieldConfig) { if (isHidden(fieldConfig)) { return null; } }, [utils_1.MapperKind.ARGUMENT](argConfig) { if (isHidden(argConfig)) { return null; } }, }); }