Without this fix the panic looks like the following:
```rust
---- parser::tests::lexer::string_errors stdout ----
thread 'parser::tests::lexer::string_errors' panicked at 'byte index 4 is not a char boundary; it is inside 'ɠ' (bytes 3..5) of `"\uɠ^A`', src/libcore/str/mod.rs:2219:5
```
This was found via fuzzing with `cargo-fuzz`.
* Added alternative error handling
* Fixed book tests and some sentences
* Apply suggestions from code review
Co-Authored-By: Christian Legnitto <LegNeato@users.noreply.github.com>
* Fixed book examples
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
Fixes#571
Signed-off-by: andrisak <andrisak@gmail.com>
* Replaced the old macro with the new proc macro.
Updated documentation.
Signed-off-by: andrisak <andrisak@gmail.com>
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
* Updated implementation of derive enum
- allows context specification
- allows scalar specification
- shares code with derive object
* Added this feature to CHANGELOG
* Added matrix with supported macro attributes for enums
* Added case which checks for custom context
* GraphQLUnion now can use a different context per variant
* Moved context switch test for union into right folder
* Sync resolve expression has the same form as the other impls
* Disabled custom scalar on GraphQLEnum
* Fixed CHANGELOG
* Fixed support matrix of GraphQLEnum in the book
- scalar not supported!
- skip not supported!
* Added test case for "noasync" derive attribute
* Disallowed generics and lifetimes on GraphQLEnum
* Added error message for duplicate naming
* Added error message for empty variant
* Implemented device macro for GraphQLUnion's
* Updated PR link in CHNAGELOG
* Disabled documentation on enumeration fields
* Disabled skip on fields
* Changed implementation for std::convert::Into since skip is not possible
* Added documentation for GraphQLUnion
* Added tests for GraphQLUnion
* Fixed typos in error messages (as suggested by review)
* Fixed failing documentation example
* Utilized `resolver_code` in `util::GraphQLTypeDefinitionField`.
Simplifies code and provides the idea of using
`util::GraphQLTypeDefinitionField` for different types than objects.
* Removed wrong statement about skip annotation in docs.
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
* Add subscriptions support on GraphiQL
Addresses #501
BREAKING CHANGE: `juniper::http::graphiql::graphiql_source` now requires
a second parameter
BREAKING CHANGE: `juniper_hyper::graphiql` now requires
a second parameter
BREAKING CHANGE: `juniper_iron::GraphiQLHandler::new` now requires
a second parameter
BREAKING CHANGE: `juniper_rocket::graphiql_source` now requires
a second parameter
BREAKING CHANGE: `juniper_warp::graphiql_filter` now requires
a second parameter
* Add test where graphiql subscriptions endpoint is not None
I noticed that `juniper` fails to build if the `"expose-test-schema"` feature is enabled without also enabling `"serde_json"`. I guess it might make sense to add it as a dependency so people don't have to check this file to figure that out!
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
There's a comment [here](https://docs.rs/juniper/0.14.2/juniper/attr.object.html) that only GraphQL fields can be specified in `#[juniper::object]` impl block, yet in the book it was not specified, I needed help to get the idea to try it.
I simply copied that information because it feels important.
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
* Remove duplicate link to Hyper integration
The `Adding a Server` page contains a duplicate link to `Hyper`. The first of them can cause the reader to accidentally skip the `Rocket` and `Iron` integration pages because their pages are before the one for `Hyper` in the reading order.
Remove the first link so that the list of official server integrations matches the page order.
* Match the list of integrations to the page order
In the book, the pages for the official integrations appear in the order: `Warp`, `Rocket`, `Iron`, `Hyper`, but on the `Official Server Integrations` page they are listed with `Hyper` first. This can cause readers to accidentally skip the other three integrations if they click on the link for `Hyper` first.
Move `Hyper` to the bottom of the list to match the reading order of the book.
* Remove unnecessary blank line