apollo-transform-utils
Utility transforms to be used as graphql-tools
transforms
Getting Started
Install apollo-transform-utils
with
$ npm i apollo-transform-utils
or
$ yarn add apollo-transform-utils
and use them within your delegateToSchema
resolvers:
const { Debug, PickTransform, InlineFragmentTransform, NestTransform } = require('apollo-transform-utils')
const transforms = [
new PickTransform(fieldName),
new InlineFragmentTransform('ContactInfo')
new NestTransform(`${fieldName}.user.info`),
new Debug()
]
return info.mergeInfo
.delegateToSchema({
schema: info.schema,
operation: info.operation.operation,
fieldName,
args,
context,
info,
transforms
})
Usage
NestTransform(path: string)
Place your current selection set under a specified period-delimited path
Example
const { NestTransform } = require('apollo-transform-utils')
const path = 'user.contactInfo'
const transforms = [
new NestTransform(path)
]
PickTransform(path: string)
Opposite of NestTransform
. Select selections along a period-delimited path.
Example
const { PickTransform } = require('apollo-transform-utils')
const path = 'user.contactInfo'
const transforms = [
new PickTransform(path)
]
InlineFragmentTransform(typeName: string)
Nest your currently selection under a inline fragment of type typeName
Example
const { InlineFragmentTransform } = require('apollo-transform-utils')
const typeName = 'User'
const transforms = [
new InlineFragmentTransform(typeName)
]
DocumentTransform(query: string | Document)
Creates a new document and replaces the string __SELECTIONS__
with your current selection set.
Example
const { DocumentTransform } = require('apollo-transform-utils')
const newDocument = `
query {
user {
friends {
${DocumentTransform.__SELECTIONS__}
}
}
}
`
const transforms = new DocumentTransform(newDocument)
Debug
Transform that pretty prints the current operation's document and variables. Super helpful for determining intermediate results between transforms.
Example
const { Debug, PickTransform, InlineFragmentTransform, NestTransform } = require('apollo-transform-utils')
const transforms = [
new Debug(),
new PickTransform(fieldName),
new Debug(),
new InlineFragmentTransform('ContactInfo')
new Debug(),
new NestTransform(`${fieldName}.user.info`),
new Debug()
]
Utilities
nest(path: string, selections: Array<FieldNode>)
Used by NestTransform
, but can be used as a standalone function to nest selections under a certain path.
pick(path: string, selections: Array<FieldNode>)
Used by PickTransform
, but can be used as a standalone function to pick a node along the path from a selection set.