Rename Transform

The rename transform allows you to rename:

  • GraphQL types
  • GraphQL fields
  • GraphQL field arguments

The rename transform helps you avoid conflicting names, simplify complicated names and make queries look more like mutations.

How to use?

You can import createRenameTransform to create an instance of the transform. You can use regular JavaScript functions to rename types, fields, and field arguments.

mesh.config.ts
import {
  createRenameTransform,
  defineConfig,
  loadGraphQLHTTPSubgraph
} from '@graphql-mesh/compose-cli'
 
export const composeConfig = defineConfig({
  subgraphs: [
    {
      sourceHandler: loadGraphQLHTTPSubgraph('Countries', {
        endpoint: 'https://countries.trevorblades.com'
      }),
      transforms: [
        createRenameTransform({
          // Rename types
          typeRenamer(opts) {
            if (opts.typeName === 'Country') {
              return 'MyCountry'
            }
            return ''
          },
          // Rename fields
          fieldRenamer(opts) {
            if (opts.typeName === 'Country' && opts.fieldName === 'name') {
              return 'countryName'
            }
            return ''
          },
          // Rename field arguments
          argRenamer(opts) {
            if (
              opts.typeName === 'Country' &&
              opts.fieldName === 'name' &&
              opts.argName === 'lang'
            ) {
              return 'language'
            }
            return ''
          }
        })
      ]
    }
  ]
})