UNPKG

@graphql-mesh/compose-cli

Version:
53 lines (52 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getComposedSchemaFromConfig = void 0; const fusion_composition_1 = require("@graphql-mesh/fusion-composition"); const graphql_file_loader_1 = require("@graphql-tools/graphql-file-loader"); const load_1 = require("@graphql-tools/load"); const fetch_1 = require("@whatwg-node/fetch"); async function getComposedSchemaFromConfig(config, logger) { const ctx = { fetch: config.fetch || fetch_1.fetch, cwd: config.cwd || globalThis.process?.cwd?.(), logger, }; const subgraphConfigsForComposition = await Promise.all(config.subgraphs.map(async (subgraphCLIConfig) => { const { name: subgraphName, schema$ } = subgraphCLIConfig.sourceHandler(ctx); const log = logger.child(`"${subgraphName}" subgraph`); log.info(`Loading`); let subgraphSchema; try { subgraphSchema = await schema$; } catch (e) { throw new Error(`Failed to load subgraph ${subgraphName} - ${e.stack}`); } return { name: subgraphName, schema: subgraphSchema, transforms: subgraphCLIConfig.transforms, }; })); let additionalTypeDefs; if (config.additionalTypeDefs != null) { const result = await (0, load_1.loadTypedefs)(config.additionalTypeDefs, { noLocation: true, assumeValid: true, assumeValidSDL: true, loaders: [new graphql_file_loader_1.GraphQLFileLoader()], }); additionalTypeDefs = result.map(r => r.document || r.rawSDL); } let composedSchema = (0, fusion_composition_1.composeSubgraphs)(subgraphConfigsForComposition, { typeDefs: additionalTypeDefs, }); if (config.transforms?.length) { logger.info('Applying transforms'); for (const transform of config.transforms) { composedSchema = transform(composedSchema); } } return composedSchema; } exports.getComposedSchemaFromConfig = getComposedSchemaFromConfig;