123456789101112131415161718192021222324252627282930313233 |
- // @flow strict
- import invariant from '../jsutils/invariant';
- import isPromise from '../jsutils/isPromise';
- import { parse } from '../language/parser';
- import { execute } from '../execution/execute';
- import { type GraphQLSchema } from '../type/schema';
- import {
- type IntrospectionQuery,
- type IntrospectionOptions,
- getIntrospectionQuery,
- } from './introspectionQuery';
- /**
- * Build an IntrospectionQuery from a GraphQLSchema
- *
- * IntrospectionQuery is useful for utilities that care about type and field
- * relationships, but do not need to traverse through those relationships.
- *
- * This is the inverse of buildClientSchema. The primary use case is outside
- * of the server context, for instance when doing schema comparisons.
- */
- export function introspectionFromSchema(
- schema: GraphQLSchema,
- options?: IntrospectionOptions,
- ): IntrospectionQuery {
- const queryAST = parse(getIntrospectionQuery(options));
- const result = execute(schema, queryAST);
- invariant(!isPromise(result) && !result.errors && result.data);
- return (result.data: any);
- }
|