UNPKG

@graphql-mesh/fusion-composition

Version:

Basic composition utility for Fusion spec

46 lines (45 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTypeReplaceTransform = createTypeReplaceTransform; exports.createExtendTransform = createExtendTransform; const tslib_1 = require("tslib"); const graphql_1 = require("graphql"); const utils_1 = require("@graphql-tools/utils"); const utils_js_1 = require("./transforms/utils.js"); function createTypeReplaceTransform(replacerFn) { return function typeReplaceTransform(schema) { return (0, utils_1.mapSchema)(schema, { [utils_1.MapperKind.FIELD]: (fieldConfig, fieldName, typeName) => { const newTypeName = replacerFn(typeName, fieldName, fieldConfig.type); if (typeof newTypeName === 'string' && newTypeName !== fieldConfig.type.toString()) { const newType = (0, graphql_1.typeFromAST)(schema, (0, graphql_1.parseType)(newTypeName)); if (!newType) { throw new utils_js_1.TransformValidationError(`No type found for ${newTypeName} in the schema, use a type instance instead such as GraphQLString from 'graphql'`); } return [fieldName, { ...fieldConfig, type: newType }]; } if ((0, graphql_1.isOutputType)(newTypeName)) { return [fieldName, { ...fieldConfig, type: newTypeName }]; } return undefined; }, }); }; } function createExtendTransform(typeDefs) { const typeDefsDoc = typeof typeDefs === 'string' ? (0, graphql_1.parse)(typeDefs, { noLocation: true }) : typeDefs; return function extendTransform(schema) { return (0, graphql_1.extendSchema)(schema, typeDefsDoc, { assumeValid: true, assumeValidSDL: true, }); }; } tslib_1.__exportStar(require("./transforms/filter-schema.js"), exports); tslib_1.__exportStar(require("./transforms/naming-convention.js"), exports); tslib_1.__exportStar(require("./transforms/prefix.js"), exports); tslib_1.__exportStar(require("./transforms/rename.js"), exports); tslib_1.__exportStar(require("./transforms/encapsulate.js"), exports); tslib_1.__exportStar(require("./transforms/prune.js"), exports); tslib_1.__exportStar(require("./transforms/hoist-field.js"), exports); tslib_1.__exportStar(require("./transforms/federation.js"), exports);