- Bug Fix: Fix
@link
directive arguments
- Feature: Support
@interfaceObject
directive
-
Feature: Support
@composeDirective
-
Bug Fix: Import directive definitions when a custom prototype is used
-
BREAKING (only if migrating from 0.4.2): Using a custom prototype will now require using the following method:
defmodule MyApp.MySchema do use Absinthe.Schema use Absinthe.Federation.Schema, prototype_schema: MyApp.MySchemaPrototype
instead of
defmodule MyApp.MySchema do use Absinthe.Schema use Absinthe.Federation.Schema, skip_prototype: true @prototype_schema MyApp.MySchemaPrototype
- Feature: Support Absinthe v1.7.2+ and Dataloader v2+
- BREAKING:
link/1
macro removed in favor of "extend schema" method (drop-in replacement). - BREAKING: Now requires Absinthe v1.7 or above
- BREAKING: Now requires Elixir v1.12 or above
-
Add
@link
directive for importing directivesPreviously,
import_sdl
was necessary to import Federation 2 directives. The newlink
macro abstracts this and adds the@link
directive according to the spec. Please refer to the README for usage details.
-
BREAKING: Parent type for entities to have properly-cased keys
Previously, the entity resolvers had a parent map with atom keys that were camelCased if the field name in the query was camelCased. With this version, the parent type's keys will be converted to internal naming convention of your Absinthe.Adapter, defaulting to snake_cased key names.
You may need to update your extended type resolvers to receive parent type maps with snake_cased keys.
-
BREAKING: @key directive to convert snake_cased field names to camelCased
Previously, the key_fields directive was used with camelCased field names, such as
key_fields("someLongKeyName")
. This translated to@key(fields: "someLongKeyName")
in the schema. If the directive was added withkey_fields("some_long_key_name")
, it translated to@key(fields: "some_long_key_name")
in the schema.With this version, adding snake_cased keys with this directive will be converted to the external naming convention of your Absinthe.Adapter, defaulting to camelCased field, such as
key_fields("some_long_key_name")
resulting in@key(fields: "someLongKeyName")
.- If you were using the key_fields directive with camelCased field names, they may be refactored later since they will not be modified.
- If you were using it with snake_cased field names such as
key_fields("some_long_key_name")
you may need to make sure this change does not affect your schema.
- Feature: Add Federation 2 directives (except for @link)
- Bug Fix: Loosen absinthe version reqs to allow 1.7.0
- Bug Fix: Remove federated types when rendering SDL
- Feature: Support key fields validation when extending
- Bug Fix: Preserve entity ordering
- Bug Fix: Support key fields validation
- Bug Fix: Fix duplicate resolvers
- Bug Fix: Fix nested _FieldSet atom conversion
- Bug Fix: Fix duplicate resolvers
- Bug Fix: Fix default _resolve_reference bug
- Feature: Improved _Entity resolve_type
- Feature: Support for dataloader and async middlewares
- Bug Fix: Remove federated types from SDL render
- Feature: Initial federation spec
- Feature: Implement _entities field resolution
- Bug Fix: Fix representation default value
- Bug Fix: Fix _Any scalar missing parse/serialize
- Feature: Add mix task to generate the schema SDL file
- Feature: Use latest absinthe version
- Docs: Added module documentation