@graphql-mesh/fusion-runtime
Version:
Runtime for GraphQL Mesh Fusion Supergraph
42 lines (41 loc) • 1.43 kB
JavaScript
;
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;
}
},
});
}