⚠️
This is the documentation for the old GraphQL Mesh version v0. We recommend upgrading to the latest GraphQL Mesh version v1.
Migrate to GraphQL Mesh v1
Migrate to GraphQL Mesh v1
Hoist Field Transform
The hoist
transform allows you to lift a field from one object type to a ‘parent’ root or object
type. It is currently only available as a wrap
transform.
npm i @graphql-mesh/transform-hoist-field
💡
Underneath it leverages the HoistField
transform from the @graphql-tools/wrap
package.
How to use?
Given the following schema:
type Query {
users(limit: Int!, page: Int): UserSearchResult
}
type UserSearchResult {
page: Int!
results: [User!]!
}
type User {
id: ID!
}
Simple hoisting
.meshrc.yaml
transforms:
- hoist-field:
- typeName: Query
pathConfig:
- users
- results
newFieldName: users
Will transform the given schema to:
type Query {
users(limit: Int!, page: Int): [User!]!
}
type User {
id: ID!
}
Filtering args via a default for the entire path
.meshrc.yaml
transforms:
- hoist-field:
- typeName: Query
pathConfig:
- users
- results
newFieldName: users
filterArgsInPath: true # This flag sets the default for the entire path
Will transform the given schema to:
type Query {
users: [User!]!
}
type User {
id: ID!
}
Filtering args on specific levels of the path
.meshrc.yaml
transforms:
- hoist-field:
- typeName: Query
pathConfig:
- fieldName: users
filterArgs:
- limit
- results
newFieldName: users
Will transform the given schema to:
type Query {
users(page: Int): [User!]!
}
type User {
id: ID!
}
Config API Reference
typeName
(type:String
, required) - Type name that defines where field should be hoisted topathConfig
- - Array of fieldsNames to reach the field to be hoisted (required) Array of:String
object
:fieldName
(type:String
, required) - Field namefilterArgs
(type:Array of String
, required) - Match fields based on argument, needs to implement(arg: GraphQLArgument) => boolean
;
newFieldName
(type:String
, required) - Name the hoisted field should have when hoisted to the type specified in typeNamealias
(type:String
)filterArgsInPath
(type:Boolean
) - Defines if args in path are filtered (default = false)