@graphql-mesh/fusion-composition
Version:
Basic composition utility for Fusion spec
32 lines (31 loc) • 1.32 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createPrefixTransform = createPrefixTransform;
const utils_1 = require("@graphql-tools/utils");
const rename_js_1 = require("./rename.js");
function createPrefixTransform({ value, ignore = [], includeRootOperations = false, includeTypes = true, } = {}) {
return function prefixTransform(schema, subgraphConfig) {
value = value || `${subgraphConfig.name}_`;
const transforms = [];
if (includeRootOperations) {
transforms.push((0, rename_js_1.createRenameFieldTransform)(({ typeName, fieldName }) => {
if (ignore.includes(typeName) || ignore.includes(`${typeName}.${fieldName}`)) {
return fieldName;
}
return `${value}${fieldName}`;
}, utils_1.MapperKind.ROOT_FIELD));
}
if (includeTypes) {
transforms.push((0, rename_js_1.createRenameTypeTransform)(({ typeName }) => {
if (ignore.includes(typeName)) {
return typeName;
}
return `${value}${typeName}`;
}));
}
for (const transform of transforms) {
schema = transform(schema, subgraphConfig);
}
return schema;
};
}
;