# Changelog
All notable changes to this project will be documented in this file.
The format is roughly based on [Keep a
Changelog](http://keepachangelog.com/en/1.0.0/).
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## Unreleased - xxxx-xx-xx
## v0.8.7 - 2024-12-03
### Changes
- Fixed all rust 1.83 clippy lints ([#1106](https://github.com/obmarg/cynic/pull/1106))
## v0.8.6 - 2024-11-28
### Bug Fixes
- `Value::is_variable` now works correctly ([#1104](https://github.com/obmarg/cynic/pull/1104))
- Fixed the `VariableValue` debug impl which was misleading
([#1104](https://github.com/obmarg/cynic/pull/1104))
## v0.8.5 - 2024-11-27
### New Features
- Every selection set in `ExecutableDocument` now has a span.
### Bug Fixes
- `Type::wrappers` functions now return `TypeWrappersIter` instead of `impl Iterator`
- `TypeWrappersIter` is now `Clone`
## v0.8.4 - 2024-11-20
### Bug Fixes
- Removed erroneous error code from reports ([#1099](https://github.com/obmarg/cynic/pull/1099))
- Removed some stray dbg! calls ([#1097](https://github.com/obmarg/cynic/pull/1097))
## v0.8.1 - 2024-11-11
### New Features
- Added a span for directive arguments
## v0.8.0 - 2024-11-07
### Breaking Changes
- Lexing failures now include the token that failed to parse
- `Description::raw_str` has been renamed `raw_untrimmed_str` to make its
purpose clearer.
- `StringLiteral::raw_str` has been renamed `raw_untrimmed_str` to make its
purpose clearer.
- `Float`s are now correctly represented as f64 rather than f32
- `Value::as_f32` & `ConstValue::as_f32` are now `as_f64`
### New Features
- Added convenience functions to `SchemaDefintion` to get the individual
definitions from within
- Added `get` function to `ConstList`, `List,`, `ConstObject` and `Object` to
get the value of an item or field from the list or object
- `ConstList`, `List`, `ConstObject` and `Object` now implement `IntoIterator`,
which is equivalent to calling `items` or `fields`
- Added `as_f64` & `as_str` & `as_bool` functions to the respective scalar
value types.
### Bug Fixes
- `Float`s are now correctly represented as f64 rather than f32
### Changes
- `Iter` types are now reexported in the `type_system` and `executable` modules
- `Value` & `ConstValue` are now reexported from the crate root.
## v0.7.1 - 2024-10-25
### Bug Fixes
- Added `InputValueDefinition::default_value_span` again ([#1077](https://github.com/obmarg/cynic/pull/1077))
- Implemented `todo!` in `ConstValue::span` ([#1076](https://github.com/obmarg/cynic/pull/1076))
## v0.7.0 - 2024-10-25
### Breaking Changes
- Removed `InputValueDefiniton::default_value_span` - you should now fetch the
span from the `default_value` itself.
- `RootOperationTypeDefinition::span` now covers the entire root operation type
definition. For the old spans, use `RootOperationTypeDefinition::named_type_span`.
### New Features
- Added more spans to the type system AST ([#1070](https://github.com/obmarg/cynic/pull/1070))
- Added more spans to the executable AST ([#1069](https://github.com/obmarg/cynic/pull/1069))
- Added `Type::definitions` for fetching the definitions associated with a type ([#1067](https://github.com/obmarg/cynic/pull/1067))
### Bug Fixes
- Fixed an issue where explicit lifetimes had to be used on
`Iter<'_, Whatever<'_>>` ([#1072](https://github.com/obmarg/cynic/pull/1072))
- Fixed some associated type definitions on Iter ([#1068](https://github.com/obmarg/cynic/pull/1068))
## v0.6.2 - 2024-10-24
### New Features
- Added `Span::overlaps` function ([#1065](https://github.com/obmarg/cynic/pull/1065))
### Changes
- The IdReader trait now has a lifetime parameter ([#1064](https://github.com/obmarg/cynic/pull/1064))
## v0.6.1 - 2024-10-06
### Bug Fixes
- Fixed some issues with block string trimming ([#1060](https://github.com/obmarg/cynic/pull/1060))
## v0.6.0 - 2024-10-03
### New Features
- Rework `Value` significantly ([#1048](https://github.com/obmarg/cynic/pull/1048))
- Added `ConstValue` ([#1057](https://github.com/obmarg/cynic/pull/1057))
- The ExecutableId & TypeSystemId traits have been changed ([#1047](https://github.com/obmarg/cynic/pull/1047))
### Changes
- MSRV is now 1.76
## v0.5.2 - 2024-09-25
### New Features
- `Description` is now Display
([#1044](https://github.com/obmarg/cynic/pull/1044))
### Bug Fixes
- `Iter::with_ids` now takes self by reference, which works better with
`Iter` no longer being `Copy`
([#1045](https://github.com/obmarg/cynic/pull/1045))
## v0.5.1 - 2024-09-25
### Bug Fixes
- Added the `Description` convenience functions that were missed in v0.5.0
([#1041](https://github.com/obmarg/cynic/pull/1041))
## v0.5.0 - 2024-09-25
### Breaking Changes
- Integer values are now represented by `IntValue` rather than an i32.
Although the GraphQl `Int` type is represented by `i32` this restriction is
not specified for the grammar.
([#1037](https://github.com/obmarg/cynic/pull/1037))
- `Iter` is no longer `Copy` as this could cause subtle bugs. It remains
`Clone` so you can use that if you need to.
([#1036](https://github.com/obmarg/cynic/pull/1036))
- `IdRange` now implements `IntoIterator` instead of directly implementing
`Iterator`. ([#1036](https://github.com/obmarg/cynic/pull/1036))
### New Features
- Pretty printer can now optionally sort definitions & fields in its output
([#1038](https://github.com/obmarg/cynic/pull/1038))
- The type ystem AST now has spans in more places
([#998](https://github.com/obmarg/cynic/pull/998/files)).
### Bug Fixes
- Support ints larger than i32 in parser ([#1037](https://github.com/obmarg/cynic/pull/1037))
- use Iter in more places in parser ([#1030](https://github.com/obmarg/cynic/pull/1030))
## v0.4.5 - 2024-06-19
### New Features
- Add `Iter::with_ids` for iterating over readers and their corresponding `Id`s
([#984](https://github.com/obmarg/cynic/pull/984))
## v0.4.4 - 2024-06-10
### New Features
- impl Ord for parser id types ([#981](https://github.com/obmarg/cynic/pull/981))
## v0.4.3 - 2024-06-04
### Bug Fixes
- `FragmentSpread::fragment` had a missing lifetime
([#978](https://github.com/obmarg/cynic/pull/978))
## v0.4.2 - 2024-06-04
### New Features
- Added `FragmentSpread::fragment` function that looks up the named fragment
([#976](https://github.com/obmarg/cynic/pull/976))
## v0.4.1 - 2024-05-31
### New Features
- Added `Value::variables_used` to find variables used in a value
([#963](https://github.com/obmarg/cynic/pull/963))
## v0.4.0 - 2024-05-2
### Breaking Changes
- Pretty printing has been moved behind a new feature flag `pretty`
- The names of the pretty printing functions have been updated with a `_pretty`
prefix.
### New Features
- All of the readers in the executable module now impl Display, allowing you
to use them with `print!` and friends. This is hidden behind the `print`
feature. ([#962](https://github.com/obmarg/cynic/pull/962))
- All of the `Id` types now impl `Hash`, `PartialEq`, `Eq` & `Debug`
([#961](https://github.com/obmarg/cynic/pull/961))
- All of the readers now have an `id` function that allows you to retreive an
`Id` for that reader. ([#959](https://github.com/obmarg/cynic/pull/959))
- `Iter` now exposes a function `ids` that allows you to retrieve the underlying
`IdRange` ([#959](https://github.com/obmarg/cynic/pull/959))
### Bug Fixes
- Fixed a lot of bad formatting in the pretty printing of schema documents
([#957](https://github.com/obmarg/cynic/pull/957))
- Pretty printing will now add whitespace between fields & arguments that have
a docstring ([#954](https://github.com/obmarg/cynic/pull/954))
### Changes
- update rust crate logos to 0.14 ([#942](https://github.com/obmarg/cynic/pull/942))
## v0.2.7 - 2024-05-14
### New Features
- Updated most functions to return the named type `Iter` rather than
`impl ExactSizedIterator` ([#945](https://github.com/obmarg/cynic/pull/945))
- All the readers now `impl Debug`
([#923](https://github.com/obmarg/cynic/pull/923))
### Bug Fixes
- Parser now errors on an invalid directive location instead of panicing
([#948](https://github.com/obmarg/cynic/pull/948))
- Pretty printing now formats long arguments correctly
([#947](https://github.com/obmarg/cynic/pull/947))
## [v0.2.6](https://github.com/obmarg/cynic/compare/cynic-parser-v0.2.5...cynic-parser-v0.2.6) - 2024-04-16
### Features
- implement PartialEq for Type and Value ([#924](https://github.com/obmarg/cynic/pull/924))
## [v0.2.5](https://github.com/obmarg/cynic/compare/cynic-parser-v0.2.4...cynic-parser-v0.2.5) - 2024-04-15
### Fixes
- Directives on schema definitions are now parsed correctly
([#921](https://github.com/obmarg/cynic/pull/921))
- Schema extensions without operation definitions are now parsed correctly
([#921](https://github.com/obmarg/cynic/pull/921))
## [v0.2.4](https://github.com/obmarg/cynic/compare/cynic-parser-v0.2.3...cynic-parser-v0.2.4) - 2024-04-15
### Fixes
- TypeSystemDocument::definitions() now returns an ExactSizeIterator
([#919](https://github.com/obmarg/cynic/pull/919))
## [0.2.3](https://github.com/obmarg/cynic/compare/cynic-parser-v0.2.2...cynic-parser-v0.2.3) - 2024-04-15
### Fixes
- Pretty printing output is now significantly improved, but still not perfect
([#916](https://github.com/obmarg/cynic/pull/916))
## v0.2.2 - 2024-04-12
### Fixes
- Pretty printing will now escape strings
## v0.2.1 - 2024-04-04
### Changes
- Some internal changes
## v0.2.0 - 2024-03-25
### Features
- Added executable parsing support
- String escaping is now supported properly.
### Changes
- Probably a ton of other things. I'm not going to list the changes
exhaustively because of how early this library is - I'd be surprised
if anyone was using it (if I'm wrong please let me know).
## v0.1.0 - 2024-01-23
- Initial version.
- Supports parsing & printing GraphQL schemas
- Is fast