@graphql-mesh/fusion-composition
Version:
Basic composition utility for Fusion spec
29 lines (28 loc) • 1.2 kB
JavaScript
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;
};
}