module GraphQL::Analysis::AST

def analyze_query(query, analyzers, multiplex_analyzers: [])

Returns:
  • (Array) - Results from those analyzers

Parameters:
  • analyzers (Array) --
  • query (GraphQL::Query) --
def analyze_query(query, analyzers, multiplex_analyzers: [])
  query.trace("analyze_query", { query: query }) do
    query_analyzers = analyzers
      .map { |analyzer| analyzer.new(query) }
      .select { |analyzer| analyzer.analyze? }
    analyzers_to_run = query_analyzers + multiplex_analyzers
    if analyzers_to_run.any?
      visitor = GraphQL::Analysis::AST::Visitor.new(
        query: query,
        analyzers: analyzers_to_run
      )
      visitor.visit
      if visitor.rescued_errors.any?
        visitor.rescued_errors
      else
        query_analyzers.map(&:result)
      end
    else
      []
    end
  end
end