All Versions
252
Latest Version
Avg Release Cycle
21 days
Latest Release
753 days ago

Changelog History
Page 18

  • v1.5.5 Changes

    March 31, 2017

    ๐Ÿ› Bug Fixes

    • ๐Ÿ‘Œ Improve threadsafety of lazy_resolve cache, use Concurrent::Map if it's available #631
    • Properly handle unexpeced input objects #638
    • ๐Ÿ– Handle errors during definition by preseriving the definition #632
    • ๐Ÿ›  Fix nil input for nullable list types #637, #639
    • ๐Ÿ– Handle invalid schema IDL with a validation error #647
    • 0๏ธโƒฃ Properly serialize input object default values #635
    • ๐Ÿ›  Fix as: on mutation input_field #650
    • ๐Ÿ›  Fix null propagation for nil members of non-null list types #649
  • v1.5.4 Changes

    March 22, 2017

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ—„ Stop supporting deprecated one-argument schema masks #616

    ๐Ÿ› Bug Fixes

    • 0๏ธโƒฃ Return a client error for unknown variable types when default value is provided or when directives are present #627
    • ๐Ÿ›  Fix validation performance regression on nested abstract fragment conditions #622, #624
    • Put back InternalRepresentation::Node#parent and fix it for fragment fields #621
    • Ensure enum names are strings #619
  • v1.5.3 Changes

    March 20, 2017

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fix infinite loop triggered by user input. #620 This query would cause an infinite loop:
      query { ...frag }
      fragment frag on Query { __typename }
      fragment frag on Query { ...frag }
    
    • Validate fragment name uniqueness #618
  • v1.5.2 Changes

    March 16, 2017

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ“œ Parse errors are no longer raised to the application. #607 Instead, they're returned to the client in the "errors" key. To preserve the previous behavior, you can implement Schema#parse_error to raise the error:
      MySchema = GraphQL::Schema.define do
        # ...
        parse_error ->(err, ctx) { raise(err) }
      end
    

    ๐Ÿ†• New Features

    • โž• Add graphq:enum generator #611
    • ๐Ÿ“œ Parse errors are returned to the client instead of raised #607

    ๐Ÿ› Bug Fixes

    • ๐Ÿ– Handle negative cursor pagination args as 0 #612
    • Properly handle returned GraphQL::ExecutionErrors from connection resolves #610
    • Properly handle invalid nulls in lazy scalar fields #609
    • Properly handle invalid input objects passed to enum arguments #604
    • ๐Ÿ›  Fix introspection response of enum default values #605
    • ๐Ÿ‘ Allow Schema.from_definition default resolver hashes to have defaults #608
  • v1.5.1 Changes

    March 12, 2017

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fix rewrite performance regressions from 1.5.0 #599
    • โœ‚ Remove unused GraphQL::Execution::Lazy initialization API #597
  • v1.5.0 Changes

    March 10, 2017

    ๐Ÿ’ฅ Breaking changes

    • Only UTF-8-encoded strings will be returned by String fields. Strings with other encodings (or objects whose #to_s method returns a string with a different encoding) will return nil instead of that string. #517

    To opt into the previous behavior, you can modify GraphQL::STRING_TYPE:

      # app/graphql/my_schema.rb
      # Restore previous string behavior:
      GraphQL::STRING_TYPE.coerce_result = ->(value) { value.to_s }
    
      MySchema = GraphQL::Schema.define { ... }
    
    • Substantial changes to the internal query representation (#512, #536). Query analyzers may notice some changes:
      • Nodes skipped by directives are not visited
      • Nodes are always on object types, so Node#owner_type always returns an object type. (Interfaces and Unions are replaced with concrete object types which are valid in the current scope.)

    See changes to Analysis::QueryComplexity for an example migration. Here are some other specific changes:

    • Nodes are tracked on object types only, not interface or union types
    • Deprecated, buggy Node#children and Node#path were removed
    • Buggy #included was removed
    • Nodes excluded by directives are entirely absent from the rewritten tree
    • Internal InternalRepresentation::Selection was removed (no longer needed)
    • Node#spreads was replaced by Node#ast_spreads which returns a Set

    ๐Ÿ†• New features

    • Schema#validate returns a list of errors for a query string #513
    • implements ... adds interfaces to object types without inherit-by-default #548, #574
    • GraphQL::Relay::RangeAdd for implementing RANGE_ADD mutations #587
    • ๐Ÿ”Œ use ... definition method for plugins #565
    • ๐Ÿš… Rails generators #521, #580
    • GraphQL::Function for reusable resolve behavior with arguments & return type #545
    • ๐Ÿ‘Œ Support for Ruby 2.4 #475
    • Relay node & nodes field can be extended with a custom block #552
    • ๐ŸŽ Performance improvements:
      • Resolve fragments only once when validating #504
      • Reuse Arguments objects #500
      • Skip needless FieldResults #482
      • Remove overhead from ensure_defined #483
      • Benchmark & Profile tasks for gem maintenance #520, #579
      • Fetch has_next_page while fetching items in RelationConnection #556
      • Merge selections on concrete object types ahead of time #512
    • ๐Ÿ‘Œ Support runnable schemas with Schema.from_definition #567, #584

    ๐Ÿ› Bug fixes

    • ๐Ÿ‘Œ Support different arguments on non-overlapping typed fragments #512
    • Don't include children of @skipped nodes when parallel branches are not skipped #536
    • ๐Ÿ›  Fix offset in ArrayConnection when it's larger than the array #571
    • Add missing frozen_string_literal comments #589
  • v1.4.5 Changes

    March 06, 2017

    ๐Ÿ› Bug Fixes

    • When an operation name is provided but no such operation is present, return an error (instead of executing the first operation) #563
    • Require unique operation names #563
    • Require selections on root type #563
    • If a non-null field returns null, don't resolve any more sibling fields. #575
  • v1.4.4 Changes

    February 17, 2017

    ๐Ÿ†• New features

    • Relay::Node.field and Relay::Node.plural_field accept a custom resolve: argument #550
    • Relay::BaseConnection#context provides access to the query context #537
    • ๐Ÿ‘ Allow re-assigning Field#name #541
    • ๐Ÿ‘Œ Support return_interfaces on Relay::Mutations #533
    • BaseType#to_definition stringifies the type to IDL #539
    • argument ... as: can be used to alias an argument inside the resolve function #542

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fix negative offset from cursors on PostgresQL #510
    • ๐Ÿ›  Fix circular dependency issue on .connection_types #535
    • ๐Ÿ‘ Better error when Relay::Mutation.resolve doesn't return a Hash
  • v1.4.3 Changes

    February 08, 2017

    ๐Ÿ†• New features

    • GraphQL::Relay::Node.plural_field finds multiple nodes by UUID #525

    ๐Ÿ› Bug fixes

    • Properly handle errors from lazy mutation results #528
    • ๐Ÿ“œ Encode all parsed strings as UTF-8 #516
    • ๐Ÿ‘Œ Improve error messages #501 #519
  • v1.4.2 Changes

    January 23, 2017

    ๐Ÿ› Bug fixes

    • Absent variables aren't present in args (again!) #494
    • Ensure definitions were executed when accessing Field#resolve_proc #502 (This could have caused errors when multiple instrumenters modified the same field in the schema.)