Skip to content

Commit 54cfb89

Browse files
lukemurrayclaude
andcommitted
Changelog: list the new extension hook and obsolete constructor under Changes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent f8a8c33 commit 54cfb89

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
- Introspection for a user now hides the same things the SDL does. Previously a type with no type-level authorization but every field protected was still listed (with `fields: []`), a field taking an argument of a protected enum or input type was listed, protected interfaces still appeared in `interfaces`, and a directive with an argument of a protected type was listed. These are now hidden, so a client building a schema from introspection gets a valid one. Introspection without a user is unchanged.
77
- `[Required]` on an argument (a property/field of an arguments object or a method parameter) now behaves like `ArgumentHelper.Required<T>()` - the argument has no default value and must be provided by the query. Previously a value type kept its implicit `default(T)` as the schema default, so `[Required] int Take` printed `take: Int! = 0` (optional for clients) and a query leaving it out ran with `0`. It is now `take: Int!` and leaving it out is a `missing required argument` error. Remove `[Required]` if you relied on the old default.
88
- Introspection `__InputValue.defaultValue` no longer strips the quotes off string-like defaults. The spec defines it as the GraphQL literal, so a string default of `hello` is now returned as `"hello"` - the same text as in the SDL. Clients building a schema from introspection (`buildClientSchema`, GraphiQL, codegen against an endpoint) previously dropped such defaults or failed to parse them (`Guid`, strings with spaces). If you read `defaultValue` directly as text rather than parsing it as GraphQL, string defaults now include their quotes.
9+
- Added `IFieldExtension.ProcessExpressionPostSelection` (a default interface method, and virtual on `BaseFieldExtension`), called with a list field's projected result so an extension can wrap it.
10+
- `ConnectionEdgeExtension(Type listType, bool isQueryable)` is obsolete - `isQueryable` is not used. Use `ConnectionEdgeExtension(Type listType)`. It will be removed in 7.0.
911

1012
## Fixes
1113

@@ -14,8 +16,6 @@
1416
- #574 - Fixed `UseConnectionPaging()` on a field that is not on the root query type when its collection comes from EF - e.g. `schema.Type<Actor>().ReplaceField("movies", a => a.Movies.OrderByDescending(m => m.Released)).UseConnectionPaging()` - failing with `The LINQ expression 'edgeNode => ...' could not be translated`. As with offset paging above, the edges are now paged with `System.Linq`'s `Skip`/`Take`. Cursors were assigned by `ConnectionHelper.ApplyCursors` while enumerating the page, which EF can not translate inside a parent's projection, so for such a collection they are now set on the edges after EF materializes them. `last` (without `before`) on such a collection pages from the end of each parent's own collection - it relied on one total count shared by the whole request - and is taken as `Reverse().Take(last)` so EF can translate it, which needs the collection to be ordered. With `after` too, the rows up to `after` are then dropped from that page. `pageInfo { hasNextPage }` alone is an `EXISTS` query rather than loading the whole collection. Paging on root query fields is unchanged.
1517
- Fixed a connection field paging a collection of the same type at the root (`IQueryable`) and on a parent object sharing one `ConnectionEdgeExtension`, which used whether the first configured field was `IQueryable` for both (`No generic method 'Skip' on type 'QueryableExtensions'`). It is now decided per use.
1618
- Fixed connection paging `pageInfo.hasPreviousPage` being `false` for `last` without `before` when exactly one item comes before the page (e.g. `last: 2` of 3 items).
17-
- Added `IFieldExtension.ProcessExpressionPostSelection` (a default interface method, and virtual on `BaseFieldExtension`), called with a list field's projected result so an extension can wrap it.
18-
- `ConnectionEdgeExtension(Type listType, bool isQueryable)` is obsolete - `isQueryable` is not used. Use `ConnectionEdgeExtension(Type listType)`. It will be removed in 7.0.
1919

2020
# 6.2.4
2121

0 commit comments

Comments
 (0)