馃寠 A GraphQL implementation in Gleam
1# Changelog
2
3## 2.1.4
4
5### Fixed
6
7- Variables are now preserved when executing nested object and list selections. Previously, variables were lost when traversing into nested contexts, causing variable references in nested fields to resolve as empty.
8
9## 2.1.3
10
11### Fixed
12
13- Union type resolution now works for fields wrapped in NonNull (e.g., `NonNull(UnionType)`). Previously, the executor only checked for bare `UnionType`, missing cases where unions were wrapped.
14
15## 2.1.2
16
17### Fixed
18
19- Union type resolution now uses a canonical type registry, ensuring resolved types have complete field definitions
20- Made `build_type_map` public in introspection module for building type registries
21- Added `get_union_type_resolver` to extract the type resolver function from union types
22- Added `resolve_union_type_with_registry` for registry-based union resolution
23
24## 2.1.1
25
26### Fixed
27
28- Inline fragments on union types within arrays now resolve correctly (was skipping union type resolution for `List[NonNull[Union]]` items)
29- Union types are now always traversed during introspection on first encounter, ensuring their `possibleTypes` are properly collected
30
31## 2.1.0
32
33### Added
34
35- Argument type validation: list arguments now produce helpful errors when passed objects instead of lists
36- `isOneOf` field in type introspection for INPUT_OBJECT types (GraphQL spec compliance)
37- Introspection types are now returned in alphabetical order by name
38
39## 2.0.0
40
41### Added
42
43- Support for variable default values (`$name: Type = defaultValue`)
44- Default values are applied during execution when variables are not provided
45- Provided variables override default values
46- New `schema.named_type_name` function to get the base type name without List/NonNull wrappers
47
48### Fixed
49
50- Integer and float literal arguments are now correctly converted to `value.Int` and `value.Float` instead of `value.String`
51- Fragment spread type condition matching now works correctly when parent type is wrapped in NonNull or List
52- Inline fragment type condition matching now works correctly with wrapped types
53- `__typename` introspection now returns the concrete type name without modifiers
54
55### Breaking Changes
56
57- `Variable` type now has 3 fields: `Variable(name, type_, default_value)` instead of 2
58- Code pattern matching on `Variable` must be updated to include the third field
59- Migration: Add `None` or `_` as the third argument when constructing or matching `Variable`
60
61## 1.1.0
62
63### Added
64
65- Support for list types in variable definitions (`[Type]`, `[Type!]`, `[Type]!`, `[Type!]!`)
66
67## 1.0.1
68
69- Initial release