---
title: graphql/utilities
---
{/* title can be removed in Nextra 4, since sidebar title will take from first h1 */}
# `graphql/utilities`
The `graphql/utilities` module contains common useful computations to use with
the GraphQL language and type objects. You can import either from the `graphql/utilities` module, or from the root `graphql` module. For example:
```js
import { introspectionQuery } from 'graphql'; // ES6
const { introspectionQuery } = require('graphql'); // CommonJS
```
## Overview
### Introspection
<ul className="apiIndex">
<li>
<a href="#introspectionquery">
`const introspectionQuery` A GraphQL introspection query containing enough
information to reproduce a type system.
</a>
</li>
<li>
<a href="#buildclientschema">
`function buildClientSchema` Produces a client schema given the result of
querying a schema with `introspectionQuery`.
</a>
</li>
</ul>
### Schema Language
<ul className="apiIndex">
<li>
<a href="#buildschema">
`function buildSchema` Builds a Schema object from GraphQL schema
language.
</a>
</li>
<li>
<a href="#printschema">
`function printSchema` Prints the schema in a standard format.
</a>
</li>
<li>
<a href="#printintrospectionschema">
`function printIntrospectionSchema` Prints the introspection features of
the schema in a standard format.
</a>
</li>
<li>
<a href="#buildastschema">
`function buildASTSchema`Builds a schema from a parsed AST Schema.
</a>
</li>
<li>
<a href="#typefromast">
`function typeFromAST` Looks up a type referenced in an AST in the
GraphQLSchema.
</a>
</li>
<li>
<a href="#astfromvalue">
`function astFromValue` Produces a GraphQL Input Value AST given a
JavaScript value.
</a>
</li>
</ul>
### Visitors
<ul className="apiIndex">
<li>
<a href="#typeinfo">
`class TypeInfo` Tracks type and field definitions during a visitor AST
traversal..
</a>
</li>
</ul>
### Value Validation
<ul className="apiIndex">
<li>
<a href="#isvalidjsvalue">
`function isValidJSValue` Determines if a JavaScript value is valid for a
GraphQL type.
</a>
</li>
<li>
<a href="#isvalidliteralvalue">
`function isValidLiteralValue` Determines if a literal value from an AST
is valid for a GraphQL type.
</a>
</li>
</ul>
## Introspection
### introspectionQuery
```js
const introspectionQuery: string;
```
A GraphQL query that queries a server's introspection system for enough
information to reproduce that server's type system.
### `buildClientSchema`
```ts
function buildClientSchema(introspection: IntrospectionQuery): GraphQLSchema;
```
Build a GraphQLSchema for use by client tools.
Given the result of a client running the introspection query, creates and
returns a GraphQLSchema instance which can be then used with all GraphQL.js
tools, but cannot be used to execute a query, as introspection does not
represent the "resolver", "parse" or "serialize" functions or any other
server-internal mechanisms.
## Schema Representation
### `buildSchema`
```ts
function buildSchema(source: string | Source): GraphQLSchema;
```
Creates a GraphQLSchema object from GraphQL schema language. The schema will use default resolvers. For more detail on the GraphQL schema language, see the [schema language docs](/learn/schema/) or this [schema language cheat sheet](https://wehavefaces.net/graphql-shorthand-notation-cheatsheet-17cd715861b6#.9oztv0a7n).
### `printSchema`
```ts
function printSchema(schema: GraphQLSchema): string;
```
Prints the provided schema in the Schema Language format.
### `printIntrospectionSchema`
```ts
function printIntrospectionSchema(schema: GraphQLSchema): string;
```
Prints the built-in introspection schema in the Schema Language format.
### `buildASTSchema`
```ts
function buildASTSchema(
ast: SchemaDocument,
queryTypeName: string,
mutationTypeName: string,
): GraphQLSchema;
```
This takes the ast of a schema document produced by `parseSchemaIntoAST` in
`graphql/language/schema` and constructs a GraphQLSchema instance which can be
then used with all GraphQL.js tools, but cannot be used to execute a query, as
introspection does not represent the "resolver", "parse" or "serialize"
functions or any other server-internal mechanisms.
### `typeFromAST`
```ts
function typeFromAST(schema: GraphQLSchema, inputTypeAST: Type): GraphQLType;
```
Given the name of a Type as it appears in a GraphQL AST and a Schema, return the
corresponding GraphQLType from that schema.
### `astFromValue`
```ts
function astFromValue(value: any, type: GraphQLInputType): Value;
```
Produces a GraphQL Input Value AST given a JavaScript value.
Optionally, a GraphQL type may be provided, which will be used to
disambiguate between value primitives.
## Visitors
### `TypeInfo`
```ts
class TypeInfo {
constructor(schema: GraphQLSchema);
getType(): GraphQLOutputType;
getParentType(): GraphQLCompositeType;
getInputType(): GraphQLInputType;
getFieldDef(): GraphQLFieldDefinition;
getDirective(): GraphQLDirective;
getArgument(): GraphQLArgument;
}
```
TypeInfo is a utility class which, given a GraphQL schema, can keep track
of the current field and type definitions at any point in a GraphQL document
AST during a recursive descent by calling `enter(node)` and `leave(node)`.
## Value Validation
### `isValidJSValue`
```ts
function isValidJSValue(value: any, type: GraphQLInputType): string[];
```
Given a JavaScript value and a GraphQL type, determine if the value will be
accepted for that type. This is primarily useful for validating the
runtime values of query variables.
### `isValidLiteralValue`
```ts
function isValidLiteralValue(type: GraphQLInputType, valueAST: Value): string[];
```
Utility for validators which determines if a value literal AST is valid given
an input type.
Note that this only validates literal values, variables are assumed to
provide values of the correct type.