Skip to content

9.0.0 is here ๐ŸŽ‰

Compare
Choose a tag to compare
@mfn mfn released this 25 Jun 18:12
2cd3970

It's been 1 1/2 years since our last major release 8.0.0 ๐Ÿ˜ฑ

The library itself stays true to its roots, but we've to adapt to the evolving ecosystem (remove unsupported PHP and Laravel version) and stay compatible with other dependencies (e.g. graphql-php).

โ€ผ๏ธ This release contains breaking changes, be sure to read through all of them โ€ผ๏ธ

High level:

  • Support for PHP < 8.0 and Laravel < 9.0 was removed
  • Subtle breaking changes due to new major version 15.x of graphql-php
  • Removed support for GraphQL eager type load (= only lazy loading is done)
  • Removed the integration GraphiQL support in favour of a separate package

Breaking changes

Added

  • Upgrade to graphql-php 15 #953 / mfn
    This includes possible breaking changes also outside of this package, see also https://github.com/webonyx/graphql-php/releases/tag/v15.0.0
    Known breaking changes:

    • non-standard error related data keys are not included directly in
      errors.*.<non-standard error key> any more, but have been moved to
      errors.*.extensions.<non-standard error key>.
      Also new keys may appear here from upstream.
    • The errors.*.extensions.category has been removed upstream, but we try to
      keep it alive with the interface
      \Rebing\GraphQL\Error\ProvidesErrorCategory as it can be a useful
      discriminator on the client side in certain cases. But only the cases from
      this library are preserved, e.g. categories like request, graphql or
      internal are gone.
    • The \Rebing\GraphQL\Support\OperationParams has added required types due to
      its base class changes:
      • Old: public function getOriginalInput($key)
        new: public function getOriginalInput(string $key)
      • Old: public function isReadOnly()
        new: public function isReadOnly(): bool

    Some BC may happen also if you extended code originating in graphql-php,
    some examples:

    • if you implement custom types, you now have to use property types for e.g.
      $name or $description
    • If you used any \GraphQL\Validator\DocumentValidator in your code
      directly, you now need use FQCN to reference them and not the shortened
      string names.
    • ->getWrappedType(true) was replaced with ->getInnermostType()
    • the class \GraphQL\Type\Definition\FieldArgument has been renamed to
      \GraphQL\Type\Definition\Argument

Removed

  • Remove support for eager loading (=non-lazy loading) of types
    Lazy loading has been introduced in 2.0.0 (2019-08) and has been made the
    default since 8.0.0 (2021-11).
    The practical impact is that types are always going to be resolved using a
    type loader and therefore cannot use aliases anymore. Types and their type
    name have to match.
  • Remove integrated GraphiQL support in favour of https://github.com/mll-lab/laravel-graphiql #986 / mfn
  • Laravel 6 is no longer supported #967 / mfn
  • Laravel 8 is no longer supported #1049 / mfn

Changed

  • The type resolver is now able to resolve the top level types 'Query',
    'Mutation' and 'Subscription'
    If you have an existing query/mutation/type named like this, you need to
    rename it.
  • Return types were added to all methods of the commands #1005 / sforward
  • Upgrade to laragraph/utils v2 #1032 / mfn
  • The Pagination and SimplePagination helper types now enforce nonNull on their data types
  • The test suite now also runs with --prefer-lowest #1055 / mfn
    This uncovered a few issues with laragraph/utils and webonyx/graphql-php
    and thus their minimum version had to be slightly bumped to 2.0.1 and
    15.0.3 respectively.

Many thanks to all the contributors!

Full Changelog: 8.6.0...9.0.0