- Feature: Allow config/2 to send errors in spec compliant format
- Feature: Add async option to Absinthe.Subscription
- Bug Fix: Avoid table scans on registry
- Big Fix: Unregsiter duplicate (listening to the same topic) subscriptions individually
- POTENTIALLY BREAKING Feature: Add telemetry event on batch timeout. If you want to keep the behavior from 1.7.8, define a telemetry handler and attach it. For example:
defmodule MyApp.Telemetry do
require Logger
def log_absinthe([:absinthe, :middleware, :batch, :timeout], _, metadata, _) do
Logger.error("Failed to get batching result in #{metadata.timeout}ms for\nfn: #{inspect(metadata.fn)}")
end
end
# attach
:telemetry.attach("absinthe-batch-timeout", [:absinthe, :middleware, :batch, :timeout], &MyApp.Telemetry.log_absinthe/4, nil)
- Bugfix: Fixes an issue where schemas would not find their types, or not be found at all.
- POTENTIALLY BREAKING Bug Fix: Validate variable usage in nested input arguments.This could break incoming documents previously considered valid. Skip the Absinthe.Phase.Document.Arguments.VariableTypesMatch phase to avoid this check. See Absinthe.Pipeline on adjusting the document pipeline.
- #1321 resolves telemetry issues
- Various minor dependency versioning tweaks
- Handle Elixir 1.17 warnings
- Bugfix: Handle non_null(list_of(:thing)) with null list elements properly
- Bugfix: More non null result handling improvements
- Feature: Support Dataloader 2.0
- Bug Fix: OTP 26 and Elixir 1.15 tweaks
- Bug Fix: OTP 25 tweaks
- Bug Fix: Place extra error attributes in error extensions field
- Bug Fix: Validate type references for invalid wrapped types
- Feature: Add
specifiedBy
type system directive - Bug Fix: Object type extensions may be empty
- Bug Fix: Validate input object not being an Enum
- Bug Fix: Deduplicate directives when building schema
- Breaking Bugfix: Validate repeatable directives on schemas
- Breaking Bugfix: Add "Objects must define fields" schema validation
- Bug Fix: Validate field identifier uniqueness
- Bug Fix: Validate type references for invalid wrapped types
- Bug Fix: Adds optional fix for non compliant built-in scalar Int type.
use Absinthe.Schema, use_spec_compliant_int_scalar: true
in your schema to use the fixed Int type. It is also advisable to upgrade for custom types if you are leveraging the use of integers outside the GraphQl standard. #1131. - Feature: Support custom opts in schema pipeline modifiers
- Feature: Support error tuples when scalar parsing fails
- Feature: Convert SDL Language.* structs to SDL notation
- Feature: Support passing the resolution struct to dataloader helper callbacks
- Feature: Add support for type extensions
- Bug Fix: Add type system directives to introspection results
- Bug Fix: Add
__private__
field to EnumValueDefinition - Bug Fix: Fix bug in Schema.absinthe_types(:all) for Persistent Term
- Bug Fix: Fix default enum value check for SDL schema's
- Feature: Add
import_directives
macro - Feature: Support type extensions on schema declarations
- Bug Fix: Root objects are marked as referenced correctly
- Bug Fix: Prevent DDOS attacks with long queries
- Feature: pipeline_modifier option to Absinthe.run/3
- Bug Fix: Add end_time_mono to telemetry :stop events
-
POTENTIALLY BREAKING Bug Fix: Validate variable usage in according to spec. This could break incoming documents previously considered valid. Skip the
Absinthe.Phase.Document.Arguments.VariableTypesMatch
phase to avoid this check. SeeAbsinthe.Pipeline
on adjusting the document pipeline. -
Feature: Add GraphQL document formatter
-
Bug Fix: Fix Phase.Schema.Validation.InputOutputTypesCorrectlyPlaced not applied to SDL schema's
-
Bug Fix: Validate object/interfaces implement all transitive interfaces
-
Bug Fix: Fix check unknown types to also cover wrapped types This could break incoming documents previously considered valid. Skip the
Absinthe.Phase.Validation.KnownTypeNames
phase to avoid this check. SeeAbsinthe.Pipeline
on adjusting the document pipeline. -
Bug Fix: Validate field names are unique to an object, interface or an input object
Originally included the items from 1.7.0, but the spec validation fix was considered too impactful for a patch release.
- Feature: Update telemetry dependency to stable ~> 1.0
- Feature: Use makeup_graphql to get GraphQL syntax highlighting in docs
- Bug Fix: Fix exception when field name contains all invalid characters
- Bug Fix: Fix interface compilation behavior difference between SDL & DSL
- Bug Fix: Allow SDL syntax to contain union without member types
- Bug Fix: Account for prototype schema when rendering SDL via mix task
- Feature: Always inline functions when using persistent_term backend.
- Feature: Support optional open ended scalars
- Feature: Compress registry tables by default
- Bug Fix: Fix compilation deadlocks on type imports
- Bug Fix: Raise a better error when string serialization fails
- Feature: Improved serialization failure messages
- Bug Fix: Render null default values in SDL
- Bug Fix: Reduce memory usage of Schema.Manager
- Feature: Interfaces can now implement Interfaces, matching the latest spec
- Feature: Support for the
repeatable
directive - Feature: Enable rendering of Type System Directives in SDL based schemas.
- Feature: Correctly match Introspection type specs
- Bug Fix: Restore dynamic description support (Note: the
description
s are evaluated once --- at compile time) - Bug Fix: Restore dynamic default_value support (Note: the
default_value
s evaluated once --- at compile time) - Bug Fix: Restore dynamic Enum value support (Note: the
value
is evaluated once --- at compile time) - Bug Fix: Interface nullability corrections
- Bug Fix: Fix field listing for Inputs that import fields
- Bug Fix: Properly trim all descriptions no matter the mechanism used to specify them
- Bug Fix: Fix incorrect specification of
__TypeKind
- Bug Fix: Better match introspection schema specification
- Bug Fix: Add missing value to
__DirectiveLocation
- Bug Fix: Fix compilation problems with
import_types
- Bug Fix: Reduce memory consumption of Subscriptions
- Bug Fix: Fix for
nil
inArgumentsOfCorrectType
suggestions
- Feature: Ensure stable ordering in introspection results.
- Bug Fix: Fix rendering of interfaces in SDL
- Bug Fix: Properly escape single line descriptions in SDL
- Bug Fix: Fix
:meta
on fields - Bug Fix: Validate that DirectivesMustBeValid
- Bug Fix: Handle default value rendering with partial field set
- Bug Fix: Handle null propagation with
non_null(list_of(non_null(type)))
properly - Bug Fix: Fix double escaping issue with string literal arguments.
- Bug Fix: Fix issue with persistent term backend.
- Bug Fix: Enable hydrating resolve_type on unions. #938
- Bug Fix: #922
- Breaking Bug Fix: Variable types must align exactly with the argument type. Previously Absinthe allowed variables of different types to be used by accident as long as the data parsed.
- Feature (Experimental):
:persistent_term
based schema backend - Breaking Change:
telemetry
event keys changed since the beta release.
- Feature: SDL directives, other improvements
- Feature: Output rendered SDL for a schema
- Feature: Substantially lower subscription memory usage.
- Documentation: Testing guide, numerous fixes and updates
- Breaking Change: Scalar outputs are now type checked and will raise exceptions if the result tries to send the wrong data type in the result.
- Breaking Change:
telemetry
event names changed from thealpha
to match an emerging naming convention for tracing. - Breaking Change: Added phase to check validity of field names according to GraphQL spec. Might break existing schema's. Remove the
Absinthe.Phase.Schema.Validation.NamesMustBeValid
from the schema pipeline if you want to ignore this. - Breaking Change: To match the GraphQL spec, we no longer add a non-null error when a resolver on a non-null field explicitly returns its own error.
- Breaking Change: Removed
Absinthe.Traversal
module
Alpha 0 note: 1.5.0 alpha is safe to use on existing schemas. However, there are no schema validations at the moment, so when writing new ones you may get undefined behaviour if you write an invalid schema.
- COLUMN NUMBERS! The Absinthe Lexer has been rewritten using
nimble_parsec
and now Absinthe includes column information. - Complete rewrite of schema internals. This fixes a number of long standing bugs, and provides a variety of new features
- Feature: SDL support
- Feature: Schema decorators
- Feature: Customizable subscription de-duplification. See: https://github.com/absinthe-graphql/absinthe/blob/main/guides/subscriptions.md#de-duplicating-updates
- Feature: Built-in
telemetry
instrumentation (https://github.com/beam-telemetry/telemetry) - Breaking Change:
default_value: DateTime.utc_now()
will have its time set at compile time. IE: DON'T DO THIS. It only worked by accident before anyway, and now it no longer works, which is correct. - Breaking change: added
node_name/0
callback toAbsinthe.Subscription.PubSub
behaviour. To retain old behaviour, implement this callback to returnKernel.node/0
.
For changes pre-v1.5 see the v1.4 branch.