Open Woodz opened 2 years ago
Bumping this.
Still seeing this issue. At the moment, chucking in a @ts-ignore
but would be nice to have a firmer fix.
Exact same situation, passing an introspection in JSON into buildClientSchema
. Using the very latest graphql
at 16.4.0
.
import * as introspectionResult from "../../../graphql.schema.json";
const schema = buildClientSchema(introspectionResult);
Produces the following error:
Argument of type '{ __schema: { queryType: { name: string; }; mutationType: { name: string; }; subscriptionType: null; types: ({ kind: string; name: string; description: string; fields: null; inputFields: null; interfaces: null; enumValues: null; possibleTypes: null; } | ... 9 more ... | { ...; })[]; directives: ({ ...; } | { ...; })...' is not assignable to parameter of type 'IntrospectionQuery'.
The types of '__schema.queryType' are incompatible between these types.
Property 'kind' is missing in type '{ name: string; }' but required in type 'IntrospectionNamedTypeRef<IntrospectionObjectType>'
Other issues downstream in users of this library:
Wondered if making kind option would be enough, and it creates further problems upstream.
export interface IntrospectionNamedTypeRef<
T extends IntrospectionType = IntrospectionType,
> {
readonly kind?: T['kind'];
readonly name: string;
}
@IvanGoncharov is it simply a matter of fixing getIntrospectionQuery
to include kind
as hinted at above?
Or is that silly because the kind is obvious for root types? And we need a new introspection type for root types?
getIntrospectionQuery
only requests thename
field from the rootqueryType
object (https://github.com/graphql/graphql-js/blob/6e48d16f92b9a6df8638b1486354c6be2537033b/src/utilities/getIntrospectionQuery.ts)yet the
IntrospectionQuery
datatype definesqueryType
asIntrospectionNamedTypeRef
(https://github.com/graphql/graphql-js/blob/main/src/utilities/getIntrospectionQuery.ts#L167) which requireskind
as wellThis means that copying the result of the querying a GQL API with the introspection query as JSON and trying to assign to
IntrospectionQuery
will fail with: