Commit graph

563 commits

Author SHA1 Message Date
Kai Ren
a684e1d91c
Re-enable marks-based static checks in code generated by macros (#751)
- add associated type to IntoResolvable and IntoFieldResult traits allowing to name the GraphQLType being resolved
- relax Sized requirement on some IsInputType and IsOutputType impls
2020-09-02 22:48:54 +03:00
Caio
2ab00f55d6
Remove unused dependencies (#747) 2020-08-28 20:34:11 -10:00
Mihai Dinculescu
45c16acc6e
Actix subscriptions tests (#736)
* Actix subscriptions tests

* Use LocalBoxFuture instead of async-trait

* expose-test-schema already includes serde_json

* Add anyhow to juniper dev-dependencies

* The HTTP test helpers are not needed for juniper tests

* juniper_actix does not need tokio in dev-dependencies

Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
2020-08-18 21:08:53 -10:00
Mihai Dinculescu
8d7ba8295c
Impl subscriptions for juniper_actix (#716)
* Impl subscriptions for juniper_actix

* Add random_human example subscription

* Add actix_subscriptions example to CI

* fixup! Add random_human example subscription

* Migrate actix subscriptions to juniper_graphql_ws

* Simplify error handling

* Change unwrap to expect

* Close connection on server serialization error

Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
2020-08-09 12:19:34 -10:00
Chris
84c9720b53
GraphQL-WS crate and Warp subscriptions update (#721)
* update pre-existing juniper_warp::subscriptions

* initial draft

* finish up, update example

* polish + timing test

* fix pre-existing bug

* rebase updates

* address comments

* add release.toml

* makefile and initial changelog

* add new Cargo.toml to juniper/release.toml
2020-07-28 22:23:44 -10:00
Chris
dc309b83b7
Simplify SubscriptionConnection (#719)
* simplify SubscriptionConnection

* fmt

* update pre-existing juniper_warp::subscriptions

* use struct instead of tuple

* fmt

* update juniper_warp
2020-07-28 19:14:53 -10:00
Christian Legnitto
59419f1ec4
Remove boxed in favor of pin. (#725) 2020-07-28 19:10:15 -10:00
Christian Legnitto
29930b002b
Update compile fail tests for nightly Rust (#710)
* Update compile fail tests for latest Rust

The messages appear to have changed on nightly

* Fix tests depending on fixture data

* Fix more integration test paths

* Fix doc warnings
2020-07-18 13:19:50 -10:00
Christian Legnitto
87883876bc
Fix some clippy issues (#704) 2020-07-16 07:41:09 -10:00
Christian Legnitto
3c79f6a2c5
Move starwars schema into fixture directory (#694)
Move starwars query into fixture directory

Also include the graphql schema definition file and a test
to make sure they match.
2020-07-15 21:46:37 -10:00
Christian Legnitto
61cb75969e
Move and enable public api integration tests (#692) 2020-07-08 16:40:34 -10:00
Christian Legnitto
de3a79a142
Update CHANGELOG.md 2020-07-05 19:54:08 -10:00
Kai Ren
4d77a1a9b9
Strip redundant Send/Sync bounds (#688)
Additionally:
- strip redundant type parameters for juniper::Context in some core definitions and reuse associated type
2020-06-30 18:13:15 +03:00
Kai Ren
7578175baf
Remove internal versions of proc macros (#687)
- generate always `::juniper::` crate path in proc macros and use `extern crate self` to make it work inside `juniper`
- add optional non-documented `internal` proc macro argument to proc macros, which allows double-underscored names and is used inside `juniper` only
2020-06-30 12:26:48 +03:00
Kai Ren
35b804c37b
Decouple object safe part from GraphQLType traits (#685)
- add object safe GraphQLValue, GraphQLValueAsync and GraphQLSubscriptionValue traits containing methods for value resolution
- refactor GraphQLType, GraphQLTypeAsync and GraphQLSubscriptionType traits to register and provide GraphQL type information only
2020-06-30 11:20:21 +03:00
Christian Legnitto
ed6b257e58
Small typo changes to CHANGELOG 2020-06-27 23:52:28 -10:00
Christian Legnitto
c7cc1daed2
Update CHANGELOG.md 2020-06-27 21:41:24 -10:00
Christian Legnitto
03844468f7
Fix minor CHANGELOG typos 2020-06-27 21:38:19 -10:00
Christian Legnitto
54860880d9
Reword changelog 2020-06-27 21:34:54 -10:00
Alexander Lyon
714d602fb9
Update to_camel_case to respect the rust convention of prefixing '_' for unused vars (#684) 2020-06-27 20:15:19 -10:00
Chris
6dd6abbadc
Fix custom ScalarValue usage for unions (#681)
- make GraphQLUnion trait generic over ScalarValue
- generate generic over ScalarValue impls of GraphQLUnion trait
- add codegen tests with a custom ScalarValue for union macros
2020-06-14 14:12:53 +03:00
Kai Ren
5b9c6111f1
Relax redundant 'static lifetime bounds on ScalarValue in juniper_subscriptions::Coordinator (#680) 2020-06-10 21:27:58 -10:00
Nathan Wilson
7365b0fdd8
Upgrade bson crate to 1.0 (#678) 2020-06-10 12:34:56 +03:00
Christian Legnitto
9167654a73
Add support for GraphQL Schema Language (#676)
Co-authored-by: Alexander Lyon <arlyon@me.com>
2020-06-05 17:43:11 -10:00
Jordão Rodrigues Oliveira Rosario
40ad17c540
Normalize subscriptions endpoint in graphiql_source (#628)
The objective here is to make the Playground and GraphiQL have the same behavior with the endpoint arguments.
2020-06-05 00:45:19 +03:00
Nathan Wilson
5cf21bf41b
Fix PR #662's entry in CHANGELOG pointed to incorrect link (#675) 2020-06-04 23:46:14 +03:00
Nathan Wilson
02801ee981
Upgrade bson crate to 0.15.0 (#674) 2020-06-04 23:40:06 +03:00
Kai Ren
ddc1488195
Codegen reimplementation for GraphQL unions (#666)
- reimplement #[derive(GraphQLUnion)] macro to support:
    - both structs and enums
    - generics in type definition
    - multiple #[graphql] attributes
    - external resolver functions
- remove From trait impls generation for enum variants

- reimplement #[graphql_union] macro to support:
    - traits
    - generics in trait definition
    - multiple attributes
    - external resolver functions
    - GraphQLType implemetation for a raw trait object
    - GraphQLTypeAsync implemetation (#549)

- add marker::GraphQLUnion trait

- rewrite "2.5 Unions" section in Book (Juniper user documentation)

- rewrite `codegen` and `codegen_fail` integration tests for GraphQL unions

Additionally:
- re-export `futures` crate in `juniper` for convenient reuse in the generated code without requiring library user to provide `futures` crate by himself (#663)
- use unit type () as default context for EmptyMutation and EmptySubscriptions
- relax Sized trait bound on some GraphQLType and GraphQLTypeAsync definitions, implementations and usages
2020-06-04 11:19:01 +03:00
Teymour Aldridge
31d08888e4
Make some comments clearer. (#665) 2020-05-23 20:29:58 -10:00
Caio
2cb96d0fc4
impl GraphQLScalar for NaiveTime (#657)
* impl GraphQLScalar for NaiveTime

* Add feature
2020-05-20 22:13:31 -10:00
Caio
0bb1c5beac
Relax Default impl constraint (#664)
* Relax Default impl constraint

For EmptyMutation and EmptySubscription. The built-in derive
expects `T: Default`, which is not necessary for a PhantomData
wrapper.

* Add test
2020-05-19 05:46:56 -10:00
bumblepie
5021ae80e1
Improve lookahead visibility for aliased fields (#662)
* Improve lookahead visibility for aliased fields
- Add a method to access the children of look ahead structs
- Make the behaviour around accessing aliased lookahead fields more consistent

* Deprecate old Lookahead methods for accessing child selections
2020-05-16 21:43:37 -10:00
Kai Ren
aedb2d1eb4
Support "Content-Type: application/graphql" (#426) (#654)
* 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
2020-05-08 06:00:49 -10:00
Jonas Meurer
558eae91df
Ensure Specification(June 2018) Compliance (#631)
* Implemented most test cases from the specification

* Unified error handling for all generators

- Removed proc-macro-error -> not required -> use syn::Error
- Everything below lib.rs uses proc_macro2::TokenStream
  instead of proc_macro::TokenStream
- Replaced error handling in attribute parsers

* WIP better error messages for *all* macros

* Refactored GraphQLInputObject and minor tweaks

- removed support for Scalar within a string ("DefaultScalarValue")
- removed unraw function and replaced it with the built-in one
- added error messages and return types for all functions within utils
- added more constraints to fulfill the GraphQL spec

* Fixed test-cases which are not compliant with the specification

* Removed unused function

* Added constrains, updated error messages, added marker

* Added argument rename within impl_graphql and fixed `__` tests

* Formatted and cleanup

* Added GraphQLTypeAsync for input object

* Moved codegen tests to separate module

Nightly and stable produce different outputs, thus only test nightly.

* Added IsInputType/IsOutputType traits for type checking

Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
2020-05-01 16:24:01 -10:00
Christian Legnitto
358ca27d28
Fix panic with invalid unicode query (#645)
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`.
2020-04-30 16:08:23 -10:00
Kai Ren
52aea4d68d
Disallow deserialize empty GraphQLBatchRequest (#639) (#644)
* Disallow deserialize empty GraphQLBatchRequest (#639)

* Add test for empty batch request
2020-04-30 06:16:15 -10:00
Kai Ren
79c265f027
Remove direct usage of 'serde_derive' crate and redundant usage of 'serde' crate (#640) 2020-04-28 06:39:35 -10:00
Byeongjee Kang
c761d91c69
Fix a minor typo in comment (#637) 2020-04-27 18:09:00 -10:00
Kai Ren
9064d7f523
Avoid unnecessary Vec allocation when executing GraphQLBatchRequest (#638)
Additionally:
- make GraphQLBatchRequest/GraphQLBatchResponse code a bit more laconic
2020-04-27 18:08:27 -10:00
Byeongjee Kang
dc4cdf0bf5
Fix deprecated comments (#635)
build_*_type methods return meta types directly.
They don't return builders.
2020-04-26 20:28:05 -10:00
Jordão Rodrigues Oliveira Rosario
a47d1c5430
Add actix-web integration (#603) 2020-04-20 20:21:02 -10:00
André Isaksson Kraft
2ba9f71b0c
Make graphql_scalar a proc macro (#610)
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>
2020-04-20 10:15:09 -10:00
Jonas Meurer
fe99e1cc70
Allow specifying scalar and context for GraphQLEnum (#621)
* 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
2020-04-17 19:09:04 -10:00
Jonas Meurer
a05f4e55c4
Derive macro for tagged enums (GraphQLUnion) (#618)
* 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>
2020-04-14 21:58:45 -10:00
Matthew Kuo
47f7ffaa5b
Add subscriptions support for GraphiQL (#619)
* 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
2020-04-12 15:03:09 -10:00
Christian Legnitto
5f454e05c7
Move graphiql export location (#615)
This fixes a TODO.
2020-04-10 00:06:39 -10:00
Christian Legnitto
2618100140
Update juniper_rocket to central GraphQLBatch* enums (#614) 2020-04-09 23:24:33 -10:00
Christian Legnitto
c09be69b7d
Update rocket_async to central GraphQLBatch* enums (#612) 2020-04-09 22:10:24 -10:00
Jordão Rodrigues Oliveira Rosario
926d4e5738
Changed implementation location for GraphQLBatchRequest/Response (#608) 2020-04-09 19:35:30 -10:00
Jordão Rodrigues Oliveira Rosario
1412561ffd
Added document validation in the resolve_into_stream method and a test (#604) 2020-04-05 11:59:10 -10:00
Aaron Housh
e5f655044e
Add debug derive to GraphQLResponse (#599) 2020-04-04 17:27:11 -10:00
Christian Legnitto
adc8d7be2d
Fix some clippy warnings (#595) 2020-03-31 08:34:50 -07:00
Samuel Hurel
6e4bc127b0
Add support for bson::UtcDateTime (#585) 2020-03-24 17:21:05 -07:00
Jade Devin Cabatlao
cab6decdbc
Implement GraphQLTypeAsync for Box (#582) 2020-03-21 22:04:58 -07:00
Gero Posmyk-Leinemann
5f777e8a6d
Clippy cleanup (#579) 2020-03-20 09:11:06 -07:00
nWacky
eb941e509a
Add subscription support (#433)
Co-authored-by: tyranron <tyranron@gmail.com>
Co-authored-by: Christian Legnitto <LegNeato@users.noreply.github.com>
2020-03-18 20:31:36 -07:00
Jade Devin Cabatlao
b7cc424bff
Expose SchemaType (#569)
Executor.schema(&self) is kind of useless without declaring SchemaType as public
2020-03-17 22:28:40 -07:00
Christian Legnitto
27e00419b0
More clippy and warnings. (#568)
Also, remove `dbg!()`
2020-03-14 08:55:06 -07:00
Christian Legnitto
f247dbee48
Fix most warnings (#567) 2020-03-14 00:01:02 -07:00
Christian Legnitto
2796d8df9a
More clippy fixes (#565) 2020-03-13 23:02:43 -07:00
Christian Legnitto
3b5cf4ad64
Fix some clippy lints (#564)
* Fix some clippy lints
2020-03-13 22:03:36 -07:00
Tommaso Checchi
fd4290462c
Require serde_json when enabling expose-test-schema (#527)
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>
2020-03-13 21:38:10 -07:00
Christian Legnitto
bc7e5bac13
Add docs to silence warnings for async (#563) 2020-03-13 19:34:22 -07:00
Christian Legnitto
48c924ea27
Async tests (#559)
Convert more tests to async
2020-03-10 19:11:40 -07:00
Christian Legnitto
961a07125f
Convert more tests to async (#558) 2020-03-10 00:12:09 -07:00
Christian Legnitto
bdaa77053d
Fix field_execution and merge_parallel_inline_fragments tests under async (#557)
The ordering was off when run under async. Not 100% sure I understand this code but this seems
to work.
2020-03-09 23:40:54 -07:00
Christian Legnitto
e9b8aa2c38
Rename execute -> execute_sync, execute_async -> execute (#556) 2020-03-09 22:40:26 -07:00
Christian Legnitto
00b111a1ff
Remove async feature gate (#554)
This still has the async / non-async split. Future diffs will get
rid of `GraphQLTypeAsync` and move everything into `GraphQLType`.
2020-03-08 23:20:11 -07:00
David Pedersen
ca28e90f7e
Implement std::error::Error for all error types (#419)
* Implement `std::error::Error` for all error types

* Fix copy-paste

* Implement `Display` for `Value`

This is required for implementing `Display` for `FieldError`

* Implement `std::error::Error` for `FieldError`

This required removing `impl From<T> for FieldError where T: Display`
because it would otherwise cause a conflicting implementation. That is
because `impl From<T> for T` already exists.

Instead I added `impl From<String> for FieldError` and `impl From<&str>
for FieldError` which should cover most use cases of the previous
  `impl`. I also added `FieldError::from_error` so users can convert
  from any error they may have.

* Bring back `impl<T: Display, S> From<T> for FieldError<S>`

We cannot have this and `impl<S> std::error::Error for FieldError<S>` so
we agreed this is more valuable. More context https://github.com/graphql-rust/juniper/pull/419

* Write errors without allocations
2020-02-20 22:31:58 -07:00
Nathan Wilson
389fd5ca19
Add bson crate's ObjectId to juniper foreign scalar type integrations (#517) 2020-02-12 23:49:50 -07:00
Jordão
75b597d8f3 Added usage of context validator in the async executor 2020-02-05 18:10:43 -08:00
tyranron
c51c675306
Use caret requirement for specifying 'futures' crate version 2020-02-04 09:57:47 +01:00
tyranron
dd9c201352 Upgrade uuid to 0.8 version 2020-01-29 01:59:42 -05:00
Christian Legnitto
c984457e91 Fix scalar and some tests under async
there is still some weirdness going on. Running async and
non-async tests in `integration_tests/*` works, but running it
from `integration_tests` does not.
2020-01-27 23:41:38 -05:00
Christian Legnitto
c42c71b02d Update to latest tokio 2020-01-22 07:56:03 -08:00
Christian Legnitto
e97d25d650 Fix formatting 2020-01-20 23:29:29 -08:00
Christian Legnitto
7681f42933 Merge remote-tracking branch 'upstream/master' into async-await 2020-01-20 22:47:05 -08:00
iancormac84
001cabc9e9 Changes. 2020-01-18 17:14:35 -08:00
iancormac84
c6ac0bdcef Add changes from async-await branch to Changelog. 2020-01-18 17:14:35 -08:00
Christian Legnitto
73dc5cd5b8 Release juniper 0.14.2 2020-01-18 17:14:35 -08:00
Christian Legnitto
a5ccf8c2a1 Release juniper_codegen 0.14.2 2020-01-18 17:14:35 -08:00
Christian Legnitto
3c41769cb7 Update quickstart on every release (#485) 2020-01-18 17:14:35 -08:00
Massimo Cairo
9fe1c29889 Validate variables of the executed operation only (#462)
* Validate variables of the executed operation only

* Use `unreachable!` in `validate_var_defs`.

Use `unreachable!` instead of `panic!` on invalid variable types,
since thay have already been checked during document validation.

* Fix formatting in `validation/input_value.rs`
2020-01-18 17:14:35 -08:00
Alexander Simmerl
16967d7d98 Add example of how to construct null in graphql_value 2020-01-18 17:14:35 -08:00
Massimo Cairo
d4c75f0ba5 Fix unused variable error message
Was copied from undefined variable error message.
2020-01-18 17:14:35 -08:00
Jens Krause
14986ff419 Use latest graphiql (v0.17.2) (#477)
incl. upgrade to latest React
2020-01-18 17:14:35 -08:00
Jens Krause
c342ecf73a Use latest graphql-playground (#476) 2020-01-18 17:14:35 -08:00
James Harton
bc9183784f Loosen constraints on uuid version.
The `uuid` maintainers have started releasing in the `0.8` version train.  I've relaxed the version requirements on `juniper`'s dependencies to allow juniper users to specify a different version in their `Cargo.toml` and still have the integration work.
2020-01-18 17:14:35 -08:00
Corey Farwell
758c7967d4 Bump to latest graphiql (#489)
https://github.com/graphql/graphiql/releases
2020-01-07 22:19:29 -08:00
Graeme Coupar
c2f0dd2aec Implement GraphQLTypeAsync for Arc (#479)
* Implement GraphQLTypeAsync for Arc

I'm building a GraphQL API using Juniper that proxies another GraphQL
API.  It does a large fetch upfront from the underlying GraphQL API,
transforms it into a different format and then implements some
resolvers that do some further filtering.

One of these resolvers ends up looking like:

```
async fn items(&self, ...) -> Vec<Item> {
    self.items.iter().filter(...).collect()
}
```

This causes us problems as we're returning owned Item's and Item is a
large nested structure that would be expensive to clone.

Our current work around was to put Item into an Arc, as Arc is
comparatively cheap to clone.  So our method becomes:

```
async fn items(&self, ...) -> Vec<Arc<Item>> {
    self.items.iter().filter(...).map(Arc::clone).collect()
}
```

However to support this we needed Arc to implement GraphQLTypeAsync.
This commit adds that support to juniper, by forwarding to the
GraphQLTypeAsync implementation for the contained type.

It's possible that we could have acheived something similar by adding
some lifetimes to our resolver and returning a reference, but using an
Arc was easier for us in this case.  I'm not sure if there's any reason
why this would be a bad addition to Juniper overall?

* Move GraphQLTypeAsync for Arc<T> into pointers.rs
2019-12-22 14:54:03 -08:00
danieleades
6fa6c20fa7 address clippy::all lints (#486) 2019-12-17 20:37:46 -08:00
Christian Legnitto
eddf948dad Release juniper 0.14.2 2019-12-16 21:53:51 -08:00
Christian Legnitto
e4cfc4b09f Release juniper_codegen 0.14.2 2019-12-16 21:52:50 -08:00
Christian Legnitto
cd0142ff52
Update quickstart on every release (#485) 2019-12-16 21:47:48 -08:00
Massimo Cairo
675ae060f3 Validate variables of the executed operation only (#462)
* Validate variables of the executed operation only

* Use `unreachable!` in `validate_var_defs`.

Use `unreachable!` instead of `panic!` on invalid variable types,
since thay have already been checked during document validation.

* Fix formatting in `validation/input_value.rs`
2019-12-16 00:17:13 -08:00
Alexander Simmerl
26bfe7652f
Add example of how to construct null in graphql_value 2019-12-15 13:31:24 +01:00
David Pedersen
3a6d5e6a46
Merge pull request #481 from cairomassimo/fix-unused-variable-error-message
Small fix/typo: unused variable error message
2019-12-11 18:00:38 +01:00
Massimo Cairo
8f1bf8c661 Fix unused variable error message
Was copied from undefined variable error message.
2019-12-11 17:27:06 +01:00
Jens Krause
93f3dc3d72 Use latest graphiql (v0.17.2) (#477)
incl. upgrade to latest React
2019-12-09 10:36:09 -08:00
Jens Krause
38ee6edb9e Use latest graphql-playground (#476) 2019-12-09 10:34:31 -08:00
James Harton
5d56c9f221 Loosen constraints on uuid version.
The `uuid` maintainers have started releasing in the `0.8` version train.  I've relaxed the version requirements on `juniper`'s dependencies to allow juniper users to specify a different version in their `Cargo.toml` and still have the integration work.
2019-12-01 14:27:41 +01:00
Christoph Herzog
ce3cf45ca9 Rename object proc macro to graphql_object 2019-11-16 02:57:48 +01:00
Christoph Herzog
a31d3f3888 Remove old graphql_object! macro 2019-11-16 02:33:20 +01:00
Christoph Herzog
358071bfa4 Remove deprecated ScalarValue derive
This was renamed to GraphQLScalarValue and has been deprecated for a
while
2019-11-16 02:33:20 +01:00
Christoph Herzog
9ce3d04007 Improve union proc macro
* Rename to graphql_union
* Implement full-featured parsing and code generation
2019-11-16 02:33:18 +01:00
Christoph Herzog
6861951a1e Disable async tests for juniper 2019-11-15 22:36:25 +01:00
Christoph Herzog
27e5e447c7 Fix pattern move error on stable 2019-11-15 22:34:08 +01:00
Christoph Herzog
641e87a0b6 Add back documentation for graphql_scalar! macro 2019-11-15 22:18:39 +01:00
Christoph Herzog
4f287806bd Update CHANGELOG with master breaking changes 2019-11-15 22:18:39 +01:00
Christoph Herzog
5d270b7dea Formatting 2019-11-15 22:18:38 +01:00
Christoph Herzog
f6c0bc7b02 Fix tests. 2019-11-15 21:44:08 +01:00
Christoph Herzog
b634ad39eb Various async feature fixes for the type system 2019-11-15 21:23:59 +01:00
Christoph Herzog
ad16093b88 Refactor GraphQLType::resolve to return Result<>
This unifies the output type of all resolvers.

Required for future step of making the output a associated type.
2019-11-14 09:51:32 +01:00
Christoph Herzog
6fcdd32c84 Remove GraphQLType ScalarValue default
This is more hinderance than useful.
2019-11-14 01:31:14 +01:00
Christoph Herzog
36c71d7162 chore: Remove ScalarRefValue trait
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.
2019-11-14 01:21:41 +01:00
nWacky
2144ad0d7d Remove async-trait [skip ci] 2019-11-13 14:26:25 +00:00
nWacky
a5580a939d Update most crates to futures 0.3, add todos on not updated crates 2019-11-12 12:04:09 +00:00
nWacky
cf99495368 Replace all futures::BoxFuture with juniper::BoxFuture 2019-11-12 12:04:09 +00:00
nWacky
237e69c036 Rebase async_await onto master (#454)
* feat: Raw identifier support in object macro

This commit implements raw identifier (`r#name`) support
for field names (methods) and arguments in the `object` proc macro.

Eg:

```rust
impl T {
  fn r#type(r#trait: String) -> bool {}
}
```

* Rebase onto master

* Fix merge [skip ci]
2019-11-08 09:46:48 +00:00
David Pedersen
1148c75a1d feat: Raw identifier support in object macro
This commit implements raw identifier (`r#name`) support
for field names (methods) and arguments in the `object` proc macro.

Eg:

```rust
impl T {
  fn r#type(r#trait: String) -> bool {}
}
```
2019-11-06 23:08:25 +00:00
nWacky
778606c050
Fix bad merge [skip ci] 2019-11-06 12:01:50 +03:00
nWacky
e344f1c06f
Merge branch 'async-await-resolve-some-todos' of https://github.com/instrumentisto/juniper into async-await-resolve-some-todos
# Conflicts:
#	juniper/src/macros/tests/args.rs
[skip ci]
2019-11-06 11:46:21 +03:00
nWacky
09d9513da9
Rebase onto master 2019-11-06 11:45:19 +03:00
nWacky
4834349310
Rebase onto async-await 2019-11-06 11:21:06 +03:00
nWacky
e151026cfa
Merge branch 'async-await-resolve-some-todos' of https://github.com/instrumentisto/juniper into async-await-resolve-some-todos
# Conflicts:
#	examples/warp_async/Cargo.toml
#	juniper/src/macros/tests/args.rs
#	juniper_codegen/src/util.rs
[skip ci]
2019-11-05 12:10:04 +03:00
nWacky
99c0d26887
Comment out attr_arg_descr and attr_arg_descr_collapse tests 2019-11-05 12:06:08 +03:00
nWacky
7135c07ae5
Format 2019-11-05 11:20:08 +03:00
nWacky
9506272b82
Merge import in async_await 2019-11-05 11:20:07 +03:00
nWacky
554ba34df1
Format 2019-11-05 11:20:07 +03:00
nWacky
dbcaf30ec3
Rebase onto master 2019-11-05 11:20:06 +03:00
nWacky
e3c12e31fc
Format 2019-11-05 11:14:53 +03:00
nWacky
b1970aecd2
Remove useless todo 2019-11-05 11:14:20 +03:00
nWacky
52c3e281f3
Refactor GraphQLTypeAsync to use async-trait 2019-11-05 11:14:20 +03:00
nWacky
820f472f2c
Add resolve_into_type_async 2019-11-05 11:14:19 +03:00
nWacky
e03e525645
Start adding async-trait to GraphQLTypeAsync 2019-11-05 11:14:19 +03:00
nWacky
bfe6c7ae97
Remove __juniper_extract_generic macro 2019-11-05 11:14:18 +03:00
nWacky
d22b5c68f3
Resolve RFC 2565 related todos 2019-11-05 11:14:18 +03:00
Christian Legnitto
191468bf04
Release juniper 0.14.1 2019-11-05 11:14:16 +03:00
Christian Legnitto
7b18bd245d
Release juniper_codegen 0.14.1 2019-11-05 11:14:15 +03:00
Christian Legnitto
bb99076326
Update CHANGELOG.md 2019-11-05 11:14:15 +03:00
Christian Legnitto
665c3d2eb6
Make EmptyMutation Send 2019-11-05 11:14:15 +03:00
Christian Legnitto
7230efc3b9
Update CHANGELOG.md 2019-11-05 11:14:14 +03:00
Andrey Kutejko
779208eea5
Bubble up scalar error (#434) 2019-11-05 11:14:14 +03:00
nWacky
3e5e2aeeb7
Format 2019-11-04 19:13:06 +03:00
nWacky
e2ebaeec3a
Merge import in async_await 2019-11-04 19:11:12 +03:00
nWacky
503bb6357f
Format 2019-11-04 19:07:25 +03:00
nWacky
09d1077735
Merge branch 'async-await-resolve-some-todos' of https://github.com/instrumentisto/juniper into async-await-resolve-some-todos 2019-11-04 18:53:42 +03:00
nWacky
2404b81008
Rebase onto master 2019-11-04 18:52:26 +03:00
nWacky
afd92cd7fe
Format 2019-11-04 16:55:36 +03:00
nWacky
9478b6c590
Remove useless todo 2019-11-04 11:40:52 +03:00
Christian Legnitto
34c380b7af cargo fmt 2019-11-03 22:23:46 -08:00
Christian Legnitto
cdf9fb333d Re-enable introspection tests.
These were fixed by previous commits.
2019-11-03 22:23:07 -08:00
Christian Legnitto
ef2277c80f Update delay to latest tokio usage 2019-11-03 22:08:33 -08:00
Christian Legnitto
560a172587 Make resolvers with returns work again
Note that this only fixes the non-async case
2019-11-03 22:07:40 -08:00
nWacky
9e2a63ab81
Refactor GraphQLTypeAsync to use async-trait 2019-11-01 19:37:55 +03:00
nWacky
737c4c7184
Add resolve_into_type_async 2019-11-01 17:51:25 +03:00
nWacky
13bbbe254b
Start adding async-trait to GraphQLTypeAsync 2019-11-01 14:26:08 +03:00
nWacky
0f4e9982c5
Remove __juniper_extract_generic macro 2019-11-01 13:43:01 +03:00
nWacky
bd3d289d59
Resolve RFC 2565 related todos 2019-11-01 13:29:11 +03:00
Christoph Herzog
ee9a82a817 Refacto graphql_union! macro to proc macro 2019-10-28 21:51:29 +01:00
Christian Legnitto
c434bddc91 Release juniper 0.14.1 2019-10-24 15:57:16 -07:00
Christian Legnitto
252f7b4353 Release juniper_codegen 0.14.1 2019-10-24 15:56:44 -07:00
Christian Legnitto
6b7977b8dd
Update CHANGELOG.md 2019-10-24 15:55:37 -07:00
Christian Legnitto
8628dddaf0 Make EmptyMutation Send 2019-10-24 20:33:48 +02:00
Christian Legnitto
9be274ae77
Update CHANGELOG.md 2019-10-23 21:38:37 -07:00
Andrey Kutejko
dd424f3579 Bubble up scalar error (#434) 2019-10-23 18:04:48 -07:00
tyranron
e2903cf0f7
Fix type inferring for trivial resolver code
Additionally:
- fix inconsistencies after merge with master
2019-10-10 14:50:10 +02:00
tyranron
635bf1ff34
Merge branch 'async-await' into remove-async-closure-feature
# Conflicts:
#	examples/warp_async/src/main.rs
#	integration_tests/async_await/src/main.rs
#	juniper/src/lib.rs
#	juniper_benchmarks/src/lib.rs
#	juniper_rocket/src/lib.rs
#	juniper_warp/src/lib.rs
2019-10-10 13:20:00 +02:00
Christian Legnitto
2884ef313b
Merge branch 'async-await' into async-await-rebase 2019-10-09 22:43:07 -07:00
Kai Ren
8d33e8db12 Upgrade futures-preview, tokio crates and remove unnecessary 'async_await' feature (#436) 2019-10-09 22:22:13 -07:00
Christian Legnitto
045c1870ef Replace futures::future::FutureExt::boxed with Box::pin 2019-10-09 22:22:13 -07:00
Christoph Herzog
c270c038ef Enable merge_imports rustfmt setting.
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.
2019-10-09 22:22:13 -07:00
Graeme Coupar
67480d176b Fix juniper issue 2019-10-09 22:22:13 -07:00
Christoph Herzog
4a4d7407aa Use Custom BoxFuture type + prepare new resolve result value 2019-10-09 22:22:13 -07:00
Christoph Herzog
c113ef6171 Experimental benchmarks 2019-10-09 22:22:13 -07:00
Christoph Herzog
3d9fc8e347 examples/warp_async: update dependency paths 2019-10-09 22:22:13 -07:00
Christoph Herzog
92871a9253 Update warp for async 2019-10-09 22:22:13 -07:00
Christoph Herzog
56a4f2558a WIP async/await implementation 2019-10-09 22:22:13 -07:00
Kai Ren
2cf991697c Upgrade futures-preview, tokio crates and remove unnecessary 'async_await' feature (#436) 2019-10-09 22:14:45 -07:00
tyranron
5d3ed9ac72
Remove async_closure feature usage 2019-10-10 00:07:10 +02:00
tyranron
639c29e91e
Upgrade futures-preview, tokio crates and remove unnecessary 'async_await' feature 2019-10-09 20:11:34 +02:00
Christian Legnitto
dbbceae643 Release juniper 0.14.0 2019-09-29 19:04:31 -07:00
Christian Legnitto
c4d7661b3b Release juniper_codegen 0.14.0 2019-09-29 19:03:54 -07:00
Christian Legnitto
02fd164e96
Update url dependency (#432) 2019-09-29 18:47:37 -07:00
James Harton
5be66654a9 Improve visitability of lookahead types. (#431)
I've added methods which allow Juniper users to visit all nodes of a lookahead tree so that they can be used for query generation.
2019-09-29 18:00:45 -07:00
nWacky
b61aa900b1 Add subscription support to query parser (#430) 2019-09-29 17:43:56 -07:00
Christian Legnitto
b08d1af7a4 Replace futures::future::FutureExt::boxed with Box::pin 2019-08-26 21:37:38 -07:00
Christoph Herzog
37e35c0180 Enable merge_imports rustfmt setting.
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.
2019-08-26 20:57:25 -07:00
Graeme Coupar
ab37f647db Fix juniper issue 2019-08-22 10:38:01 +01:00
Christoph Herzog
4940085c44 Use Custom BoxFuture type + prepare new resolve result value 2019-08-21 15:51:18 +02:00
Christoph Herzog
acd1442cea Experimental benchmarks 2019-08-21 15:48:31 +02:00
Christoph Herzog
ef3720cb67 examples/warp_async: update dependency paths 2019-08-21 15:48:31 +02:00
Christoph Herzog
f730829c1b Update warp for async 2019-08-21 15:48:31 +02:00
Christoph Herzog
a14f0ddebd WIP async/await implementation 2019-08-21 15:48:31 +02:00
Christoph Herzog
835dee1a8e Enable merge_imports rustfmt setting.
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.
2019-08-21 15:42:16 +02:00
Christian Legnitto
752584fbbd
Add myself as an author 2019-07-29 08:16:50 -07:00
Christian Legnitto
48c26a26b3 Release juniper 0.13.1 2019-07-29 08:08:05 -07:00
Christian Legnitto
6b32e90899 Release juniper_codegen 0.13.2 2019-07-29 08:07:32 -07:00
Christian Legnitto
644d6042ae Release juniper_codegen 0.13.1 2019-07-29 08:06:22 -07:00
Christian Legnitto
49fc100753
Add #404 to changelog (#406) 2019-07-29 08:57:32 -06:00
Christian Legnitto
4016d38d3d Don't assume lookaheads are always fields
Fixes https://github.com/graphql-rust/juniper/issues/398.
2019-07-25 03:42:11 +02:00
Christoph Herzog
049ba0c9dc (codegen) Respect mut modifier on arguments in object proc macro
This commit forwards `mut` declaration of arguments in a #[juniper::object] macro invocation
to the generated code.

Closes #399
2019-07-24 02:37:31 +02:00
Christoph Herzog
9e849fe512 Fix broken doc link.
Closes #400
2019-07-22 21:49:02 +02:00
Christian Legnitto
54f98f46db Release juniper 0.13.0 2019-07-19 14:01:21 -07:00
Christian Legnitto
efe22b7ffd Release juniper_codegen 0.13.0 2019-07-19 14:01:21 -07:00
Christian Legnitto
5065eb2265
Fix lookahead when query contains multiple fields (#393)
Fixes https://github.com/graphql-rust/juniper/issues/371.
2019-07-17 18:57:14 -07:00
Christian Legnitto
7bedea05ed
Clean up test warnings (#392) 2019-07-15 21:47:16 -07:00
Peter Majchrak
3373935046 Add support for "dyn" trait object syntax (#385)
* Use "dyn" for TraitObjects

* Cleanup after adding "dyn" support

* Add entry to CHANGELOG.md
2019-06-27 08:44:30 -07:00
Christoph Herzog
97e1005178 Clean up ScalarValue transparent derive argument handling and documentation. 2019-06-25 18:55:45 +02:00
Christoph Herzog
3396074274 (codegen) Implement newtype derive for scalars.
This commit implements a newtype style custom derive
for scalars via `#[derive(GraphQLScalarValue)]`, which now
supports both deriving a base enum scalar type and newtypes.

For newtypes, the `#[graphql(transparent)]` attribute is
required.

This commit:
* implements the derive
* adds integration tests
* updates the book
2019-06-25 18:55:45 +02:00
jekshmek
675f34bc46 Fix test_invalid_field juniper::http (#380) 2019-06-24 23:08:36 -07:00
Kai Ren
49f723a3dd Optimize .unwrap_or() and .expect() usages (#374) 2019-06-18 23:12:13 -04:00
Jean Mertz
3456786463 Implement Serialize/Deserialize for ID scalar
As per the unofficial Rust API guidelines:

https://rust-lang-nursery.github.io/api-guidelines/interoperability.html#data-structures-implement-serdes-serialize-deserialize-c-serde
2019-05-23 15:49:15 +02:00
Andrey Kutejko
5b9a0bd31b Split Query and Database types in example schema (#360) 2019-05-18 09:07:51 -07:00
Christian Legnitto
9c9e3da72d Release juniper 0.12.0 2019-05-16 19:03:21 -07:00
Christian Legnitto
8a047e8702 Release juniper_codegen 0.12.0 2019-05-16 19:01:52 -07:00
theduke
d47aa990ba Remove GraphQLType impl for unit () type (#355)
This impl can cause weird runtime errors and serves
no real practical purpose.

Removing the impl is a breaking change but is the only
way to error out at runtime.
2019-05-16 07:22:13 -07:00
David Pedersen
2518eff0c9 Expose the operation name from juniper_rocket::GraphQLRequest (#353)
Measuring the runtime of queries will only tell if there are slow
queries. To find out which queries are slow you need the operation name.

Getting the operation name was previously not possible from a Rocket
request handler. This fixes that.
2019-05-15 07:26:40 -07:00
Christoph Herzog
166c6d00c5 (tooling) Update release config to bump doc_root. 2019-05-15 11:20:51 +02:00
Yusuke Sasaki
0ae2475bb8 add #[doc(html_root_url)] to all published crates 2019-05-15 11:20:51 +02:00
Christoph Herzog
29025e6cae
Rename impl_object to object. 2019-05-13 21:15:14 +02:00
Christoph Herzog
520cac29a0
(codegen) Allow #[deprecated] on field in impl_object 2019-05-13 12:37:22 +02:00
Christoph Herzog
db0d5952dd
Formatting 2019-05-13 12:35:14 +02:00
Christoph Herzog
ffe00b9fa3
Fix release tooling for juniper_codegen
Patch juniper_codegen dev dependency on juniper.
2019-05-12 21:31:15 +02:00
Christoph Herzog
de12e0eba5
Formatting... 2019-05-12 10:49:46 +02:00
Christoph Herzog
3cc142bfbc
Bump minimum rust version to 1.34 2019-05-12 10:49:40 +02:00
Christoph Herzog
52d7af2b8e
Remove internal macros from export + improve macro doc system.
Remove the internal macros from re-export.
This was a mistake.
Also, import each item from juniper_codegen manually to enable
rustdoc integration.
2019-05-12 10:36:30 +02:00
Christoph Herzog
a993c16b85
Deprecate graphql_object! and replace with impl_object
This commit deprecates the graphql_object macro and replaces
all of it's uses with the new impl_object proc macro.
(Except for the old macro tests).

This commit also adds new integration tests for impl_object.
2019-05-12 10:36:30 +02:00
Christian Legnitto
794568e463
Add release automation (#346)
See `RELEASING.md` for directions
2019-05-11 23:51:28 -07:00
Christian Legnitto
edd1b26d71
Fix CHANGELOG typos 2019-05-11 22:54:40 -07:00
Christoph Herzog
2e011014ea
Formatting... 2019-05-02 18:44:56 +02:00
Christoph Herzog
2ce2964b65
Fix clippy warnings 2019-05-02 18:44:56 +02:00
Christoph Herzog
5a4230e0d0
Remove macro_use + extern crate statements (2018 edition) 2019-05-02 18:44:56 +02:00
Christoph Herzog
54a1b64a79
Refactor code to 2018 edition with 'cargo fix --edition' 2019-05-02 18:44:56 +02:00
Christoph Herzog
178f594e58 Fix lookahead for optional arguments. 2019-05-02 18:30:27 +02:00
Christoph Herzog
85d5480d50 Make introspection tests ordering independent.
With the new HashMap implementation, the maps on stable and nightly
have different ordering.

The introspection tests were relying on strict ordering.
This commit adds a simple sorting of the results to prevent
test failures.
2019-05-02 18:25:14 +02:00
Christian Legnitto
6ff551fcb0 Support fragments with nested types in lookahead
Fixes https://github.com/graphql-rust/juniper/issues/335
2019-04-06 19:52:18 +02:00
Christian Legnitto
e11d0d2535 Remove typo in comment 2019-04-04 09:11:20 +02:00
Christian Legnitto
ba8cfbd105 Add support for the canonical introspection query
Fixes https://github.com/graphql-rust/juniper/issues/307.
2019-04-04 09:11:20 +02:00
Christoph Herzog
bd6f192998 Add Object::iter(_mut) return type change to changelog. 2019-03-08 23:06:00 +01:00
Christian Legnitto
287a24675a Fix TODO for return type
We have bumped past the point of this TODO so we can make
the changes.
2019-03-08 23:06:00 +01:00
Christian Legnitto
5241455d17 Remove deprecated function calls
The replacements were added in 1.30, which we have previously switched to
requiring. This silences two warnings.
2019-03-03 09:43:43 +01:00
Christian Legnitto
52fb87aaf4 Run cargo fmt on latest stable 2019-01-28 20:28:03 +01:00
Jakob Gillich
b4a0669b37 Add GraphQL Playground integration (#317) 2019-01-25 20:58:01 -08:00
Christian Legnitto
fa80bf7de7 Remove unused crate
This was throwing a warning during compiling.
2019-01-10 01:38:15 +01:00
theduke
c7d1481c6e Fix the literal value of DirectiveLocation::InlineFragment (#306)
The literal value according to the standard is INLINE_FRAGMENT,
not INLINE_SPREAD.

This oversight leads to invalid introspection schemas and trips up
third party tools.
2018-12-23 07:50:03 -08:00
Christoph Herzog
85ba97dcd9 Clean up introspection tests
* Prefix test function names with 'introspection'
* Use graphql_value! macro instead of manual construction
2018-12-23 15:33:47 +01:00
Christian Legnitto
88c17db8c3 Rename ScalarValue derive
Fixes https://github.com/graphql-rust/juniper/issues/299.
2018-12-19 20:17:17 +01:00
theduke
d015a3ca66 (ci) Check formatting with cargo fmt (#302)
This adds a new extra CI job for checking the formatting
with cargo fmt --check.
2018-12-19 10:27:49 -08:00
Christian Legnitto
aa80ec51bb Add integration tests to release automation
We want their version bumped when juniper is released as
well.
2018-12-19 07:25:27 -08:00