- create `juniper_axum` crate in Cargo workspace
- implement `graphql` default `axum` handler for processing GraphQL requests
- implement `extract::JuniperRequest` and `response::JuniperResponse` for custom processing GraphQL requests
- implement `subscriptions::graphql_transport_ws()` default `axum` handler for processing the new `graphql-transport-ws` GraphQL over WebSocket Protocol
- implement `subscriptions::graphql_ws()` default `axum` handler for processing the legacy `graphql-ws` GraphQL over WebSocket Protocol
- implement `subscriptions::serve_graphql_transport_ws()` function for custom processing the new `graphql-transport-ws` GraphQL over WebSocket Protocol
- implement `subscriptions::serve_graphql_ws()` function for custom processing the legacy `graphql-ws` GraphQL over WebSocket Protocol
- provide `examples/simple.rs` of default `juniper_axum` integration
- provide `examples/custom.rs` of custom `juniper_axum` integration
Additionally:
- fix `junper_actix` crate MSRV to 1.73
- add `test_post_with_variables()` case to integration `juniper::http::tests`
Co-authored-by: ilslv <ilya.solovyiov@gmail.com>
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
Co-authored-by: Kai Ren <tyranron@gmail.com>
- consider `juniper_graphql_transport_ws` crate on CI
- implement auto-selection of protocol in `juniper_warp` crate
- support `graphql-transport-ws` protocol in `juniper_actix` crate
- implement auto-selection of protocol in `juniper_actix` crate
Additionally:
- move `examples/warp_subscriptions` into `juniper_warp/examples/subscription.rs`
- move `examples/actix_subscriptions` into `juniper_actix/examples/subscription.rs`
- move `examples/basic_subscriptions` into `juniper_subscriptions/examples/basic.rs`
- bump up MSRV of `juniper_actix` crate to 1.68
- track GraphiQL new version via @dependabot
- automate GraphiQL integration glue adapting for new versions
- rework `example/warp_subscriptions` to support subscriptions in new GraphiQL
- set 1.62 Rust as MSRV
- use new fmt syntax where possible
- refactor `.to_owned()`, `.to_string()` and `.into()` usage
- rename `IntoResolvable::into()` as `IntoResolvable::into_resolvable()` to disambiguate with `Into::into()`
- use `#[derive(Default)]` for enums where possible
- use `bool::then_some()` where possible
- remove `cargo-make` integration
- rework CI pipeline more granular and precise
- rework releasing process
- tune up project layout
- fill up new CHANGELOGs
Additionally:
- fix latest nightly/stable Rust inconsistencies
- preserve and reuse defined impl blocks in #[graphql_object] and #[graphql_subscription] macros expansion
- allow renaming `ScalarValue` type parameter in expanded code via `scalar = S: ScalarValue` syntax
Additionally:
- rename `rename` attribute's argument to `rename_all`
- support `rename_all` in #[graphql_interface] macro
* Support 'application/graphql' POST requests for 'juniper_warp'
* Add integration tests for 'application/graphql' POST requests and revive HttpIntegration test suite for 'juniper_warp'
* Support 'application/graphql' POST requests for 'juniper_hyper' and run its tests for both sync and async versions
* Run integration tests for both sync and async versions of 'juniper_warp' and update its CHANGELOG
* Support 'application/graphql' POST requests for 'juniper_iron'
* Fix 'application/graphql' POST requests support for 'juniper_actix'
* Support 'application/graphql' POST requests in 'juniper_rocket' and 'juniper_rocket_async'
* Upd juniper's CHANGELOG
* 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
The trait was introduced while introducing generic scalars, but is not
actually required or useful. It's functionality is fully covered by
methods on the `ScalarValue` trait.
It also forced a lof of for<'a> ScalarRefValue bounds all over the code,
complicating signatures a lot.
It is completely removed now.
style: Enable rustfmt merge_imports and format
This commit enables the rustfmt merge_imports setting
and formats the whole code base accordingly.
Note that the setting is not stable yet, but will be with Rust 1.38.
In the meantime, running fmt on stable will just leave the
changes alone so no problems should occur.