/** @category Introspection */ import type { GraphQLSchema } from "../type/schema.mjs"; import type { IntrospectionOptions, IntrospectionQuery } from "./getIntrospectionQuery.mjs"; /** * 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. * @param schema - GraphQL schema to use. * @param options - Optional configuration for this operation. * @returns Introspection result data for the schema. * @example * ```ts * // Include schema metadata using the default introspection options. * import { buildSchema, introspectionFromSchema } from 'graphql/utilities'; * * const schema = buildSchema(` * scalar Url @specifiedBy(url: "https://url.spec.whatwg.org/") * * type Query { * homepage: Url * } * `); * * const introspection = introspectionFromSchema(schema); * const urlType = introspection.__schema.types.find( * (type) => type.name === 'Url', * ); * * urlType.specifiedByURL; // => 'https://url.spec.whatwg.org/' * ``` * @example * ```ts * // This variant disables optional introspection metadata. * import { buildSchema, introspectionFromSchema } from 'graphql/utilities'; * * const schema = buildSchema(` * scalar Url @specifiedBy(url: "https://url.spec.whatwg.org/") * * type Query { * homepage: Url * } * `); * * const introspection = introspectionFromSchema(schema, { * descriptions: false, * specifiedByUrl: false, * directiveIsRepeatable: false, * schemaDescription: false, * inputValueDeprecation: false, * experimentalDirectiveDeprecation: false, * oneOf: false, * }); * const urlType = introspection.__schema.types.find( * (type) => type.name === 'Url', * ); * const deprecatedDirective = introspection.__schema.directives.find( * (directive) => directive.name === 'deprecated', * ); * * urlType.specifiedByURL; // => undefined * urlType.description; // => undefined * introspection.__schema.description; // => undefined * deprecatedDirective.isRepeatable; // => undefined * ``` */ export declare function introspectionFromSchema(schema: GraphQLSchema, options?: IntrospectionOptions): IntrospectionQuery;