UNPKG

@graphql-mesh/fusion-composition

Version:

Basic composition utility for Fusion spec

29 lines (28 loc) 1.2 kB
import { MapperKind } from '@graphql-tools/utils'; import { createRenameFieldTransform, createRenameTypeTransform } from './rename.js'; export function createPrefixTransform({ value, ignore = [], includeRootOperations = false, includeTypes = true, } = {}) { return function prefixTransform(schema, subgraphConfig) { value = value || `${subgraphConfig.name}_`; const transforms = []; if (includeRootOperations) { transforms.push(createRenameFieldTransform(({ typeName, fieldName }) => { if (ignore.includes(typeName) || ignore.includes(`${typeName}.${fieldName}`)) { return fieldName; } return `${value}${fieldName}`; }, MapperKind.ROOT_FIELD)); } if (includeTypes) { transforms.push(createRenameTypeTransform(({ typeName }) => { if (ignore.includes(typeName)) { return typeName; } return `${value}${typeName}`; })); } for (const transform of transforms) { schema = transform(schema, subgraphConfig); } return schema; }; }