@theguild/federation-composition
Version:
Open Source Composition library for Apollo Federation
16 lines (15 loc) • 873 B
JavaScript
import { applyTagFilterOnSubgraphs, } from "./tag-extraction.js";
import { composeServices } from "../compose.js";
import { extractLinkImplementations } from "../utils/link/index.js";
import { addInaccessibleToUnreachableTypes } from "./add-inaccessible-to-unreachable-types.js";
export function composeSchemaContract(services, tagFilter, removeUnreachableTypes = true) {
const filteredSubgraphs = applyTagFilterOnSubgraphs(services, tagFilter);
const compositionResult = composeServices(filteredSubgraphs);
if (!compositionResult.errors &&
compositionResult.supergraphDocumentNode &&
removeUnreachableTypes) {
const { resolveImportName } = extractLinkImplementations(compositionResult.supergraphDocumentNode);
return addInaccessibleToUnreachableTypes(resolveImportName, compositionResult);
}
return compositionResult;
}