code: function getFieldDefinitionStrict(
    schema: GraphQLSchema,
    parentType: GraphQLOutputType,
    fieldName: string,
    fieldAST: FieldNode,
  ): ?GraphQLField<mixed, mixed> {
    const type = getRawType(parentType);
    const isQueryType = type === schema.getQueryType();
    const hasTypeName =
      type instanceof GraphQLObjectType ||
      type instanceof GraphQLInterfaceType ||
      type instanceof GraphQLUnionType;
  
    let schemaFieldDef;
    if (isQueryType && fieldName === SchemaMetaFieldDef.name) {
      schemaFieldDef = SchemaMetaFieldDef;
    } else if (isQueryType && fieldName === TypeMetaFieldDef.name) {
      schemaFieldDef = TypeMetaFieldDef;
    } else if (hasTypeName && fieldName === TypeNameMetaFieldDef.name) {
      schemaFieldDef = TypeNameMetaFieldDef;
    } else if (
      type instanceof GraphQLInterfaceType ||
      type instanceof GraphQLObjectType
    ) {
      schemaFieldDef = type.getFields()[fieldName];
    }
    return schemaFieldDef;
  }
docs: Find the definition of a field of the specified type using strict
  resolution rules per the GraphQL spec.