defmodule Absinthe.Complexity do
@moduledoc """
Extra metadata passed to aid complexity analysis functions, describing the
current field's environment.
"""
alias Absinthe.{Blueprint, Schema}
@enforce_keys [:context, :root_value, :schema, :definition]
defstruct [:context, :root_value, :schema, :definition]
@typedoc """
- `:definition` - The Blueprint definition for this field.
- `:context` - The context passed to `Absinthe.run`.
- `:root_value` - The root value passed to `Absinthe.run`, if any.
- `:schema` - The current schema.
"""
@type t :: %__MODULE__{
definition: Blueprint.node_t(),
context: map,
root_value: any,
schema: Schema.t()
}
end