Commit graph

354 commits

Author SHA1 Message Date
Damir Vandic
44002f0884 Hyper integration crate (#230)
This adds the new integration crate `juniper_hyper`.
2018-09-01 20:02:01 -07:00
Marshall Bowers
facb0d2f5d [juniper_rocket] Expose GraphQLResponse fields (#238) 2018-08-31 18:46:27 -07:00
Christian Legnitto
45004f77a3
Allow crate type paths in resolve for graphql_scalar! (#229)
Fixes https://github.com/graphql-rust/juniper/issues/227.
2018-08-27 15:26:33 -07:00
Christian Legnitto
08c31357af
Add support for lifetime annotations when using derives (#226)
Fixes https://github.com/graphql-rust/juniper/issues/225
2018-08-27 15:25:15 -07:00
Christian Legnitto
22c955599a
Add support for skipping fields in GraphQL objects (#224)
Fields can now be skipped with the `#[graphql(skip)]` annotation. Note this
doesn't really make sense for GraphQLInputObjects so this isn't supported there.

Fixes https://github.com/graphql-rust/juniper/issues/220.
2018-08-27 15:09:42 -07:00
Dirkjan Ochtman
62d015cf86 Upgrade juniper_codegen dependencies (#231)
* Upgrade `juniper_codegen` to `syn-0.14`/`quote-0.6`

* Upgrade `juniper_codegen` to `regex-1.0`

* Fix comment typos in enum derive code

* Stop testing rust-1.21.0, replace with rust-1.23.0. rust-1.21.0 breaks with the newer dependencies
2018-08-27 14:51:12 -07:00
Yusuke Sasaki
d496220e10 Use local_inner_macros to all helper macros (#233)
This enables  Rust2018-style macro imports:

```rust
use juniper::graphql_object;

graphql_object!(User: () |&self| { ... });
```

In the future when dropping compatibility with pre-2018 compilers,
this can be replaced with the explicit `$crate` prefixes instead of
`local_inner_macros`.

In `macro_rules!` with the annotation `local_inner_macros`, all of macro calls
are transformed into `$crate::builtin!(...)` (See [1] for details).
Therefore, name resolutions of built-in macros are not perfomed correctly.
To avoid this, some helper macros are introduced to make built-in
macros be interpreted as crate-local macros.

[1]: https://github.com/rust-lang/rust/issues/53464#issuecomment-414049821
2018-08-26 12:11:27 -07:00
Damir Vandic
273edc1d64 Add charset meta to GraphiQL iron integration (#228)
Fixes #223
2018-08-20 10:19:47 -07:00
Christian Legnitto
c04b06f79b
Fix bad merge (#222) 2018-08-19 08:10:18 -06:00
Damir Vandic
ec59766d51 Use 'extensions' as field for error details (#219) 2018-08-13 07:53:52 -06:00
Georg Semmler
90b89f00ee Performance improvements (#202)
Performance improvements

* Replace the IndexMap in the serialized object with a plain
  `Vec<(String, Value)>` because linear search is faster for few
  elements

* Some general tweaks to skip some allocations
2018-08-13 07:47:18 -06:00
Christoph Herzog
56f71e934b Format code 2018-07-19 16:18:49 +02:00
Christoph Herzog
39945b2b23 Update changelog (Arc<T> implements GraphQLType, ToInputValue)
Arc<T> now implements GraphQLType and ToInputValue
2018-07-19 16:18:49 +02:00
Paul Colomiets
4dc155c51a Implement GraphQLType and ToInputValue for Arc<T> 2018-07-19 16:18:49 +02:00
Christian Legnitto
915b846a83
Update CHANGELOG.md 2018-07-13 01:31:13 -07:00
Andrey Kutejko
e63b42bc8e (juniper_iron) fallible context factory (#180) 2018-07-13 01:30:14 -07:00
Christian Legnitto
521930e911
Escape urls in iron integration tests (#208)
It appears with newer 0.10.x hyper it no longer takes "{" or "}" in the
query string unescaped.

When I tried to set `juniper_iron` to an older hyper it complained that it
couldn't resolve due to `juniper_rocket` needing a newer version.
This was the path of least resistance. Note that we are still testing the same
thing, this change is needed as a consequence of how `iron_test` creates mock
requests.

Fixes https://github.com/graphql-rust/juniper/issues/206
2018-07-12 18:34:37 -07:00
Sharad Chand
f115d0bb57 Allow custom errors to be returned from queries, mutations (#205)
* Added trait to convert a custom error type into a FieldError
* Convert the error type of the gql fields if it implements IntoFieldError
* Added test case to check if custom error handling works
* Added to changelog
2018-07-12 18:24:29 -07:00
Paul Colomiets
2e9408e5f6 Consistent error serializing for GraphQLError (#207)
GraphQL spec requires every error contain `{"message": "field"}`. Every
error in juniper except ones fixed here are reported consistently with
this style. This commit fixes ones left.
2018-07-10 08:07:18 -07:00
Sharad Chand
569bc16415 Don't make assumptions what features the rocket app might use. (#204) 2018-07-06 08:10:08 -07:00
Christian Legnitto
4be687f73e Add more unit tests for doc comments as descriptions 2018-06-20 20:45:34 +02:00
Christian Legnitto
1fd5c10327 Add support for using doc comments as descriptions
Fixes https://github.com/graphql-rust/juniper/issues/194.
2018-06-20 20:45:34 +02:00
Cameron Eldridge
e84167286b Handle an array of GraphQL queries (#171) 2018-06-07 17:44:30 -07:00
Christian Legnitto
f0cbc97dc7
Do not assign field to itself if no description specified when deriving input object (#187)
If a field has a description, we properly generate a meta field definition like:

```rust
{
  let field = registry.field::<String>("id", &());
  let field = field.description("Whatever");
  field
}
```

If a field does not have a description, we were generating something like:

```rust
{
  let field = registry.field::<String>("id", &());
  let field = field; // <--- Note not needed
  field
}
```

This of course works (and was likely optimized out by the compiler), but bloats
generated code for no benefit.

This change merely makes the second case generate:

```rust
{
  let field = registry.field::<String>("id", &());

  field
}
```

Fixes https://github.com/graphql-rust/juniper/issues/185.
2018-06-06 18:40:45 -07:00
Sagie Gur-Ari
d5d57f8a10 use prebuilt cargo-make for travis build (#193)
* use prebuilt cargo-make for travis build

* use prebuilt cargo-make for travis build

* use prebuilt cargo-make for travis build

* use prebuilt cargo-make for travis build

* use prebuilt cargo-make for travis build
2018-06-01 09:25:18 -07:00
Kevin Stenerson
f2d228b8ae Add helpers to build custom GraphQLResponse (#158) 2018-05-29 23:28:36 -07:00
Christian Legnitto
7933bf92a5
Rename variable to be more descriptive. 2018-05-23 00:49:23 -07:00
piperRyan
9080448da2 Add Compile Time Check For "Invalid" Names (#170) 2018-05-23 00:25:20 -07:00
Paul Colomiets
69db4c247b Deserialize large integers as InputValue::float (fixes #178) 2018-05-23 00:21:57 -07:00
Georg Semmler
34391855af Fix imports 2018-05-20 15:55:34 +02:00
Georg Semmler
19e76865c9 Remove unused type_name field to fix tests 2018-05-20 15:55:34 +02:00
Georg Semmler
cfc3109109 Rename childs to children 2018-05-20 15:55:34 +02:00
Georg Semmler
da9c21ccfe Add some documentation to the lookahead feature 2018-05-20 15:55:34 +02:00
Georg Semmler
61c07b95fc Small improvements + rustfmt 2018-05-20 15:55:34 +02:00
Georg Semmler
dd99914fbe Add a basic lookahead functionality 2018-05-20 15:55:34 +02:00
theduke
61f0c7d337
Update uuid version range
Allow 0.5 and 0.6
2018-05-10 06:43:28 +02:00
Christoph Herzog
9313c7ca6d Run rust fmt. 2018-05-03 07:38:10 +02:00
Marcus Griep
b94ed37c1f Remove unnecessary format!()
The `E::custom()` function requires a value of any type that implements
`fmt::Display`, so a plain `&str` works just fine here.
2018-05-03 07:27:15 +02:00
Marcus Griep
d1cddfb55f Revert lossy conversions to use as
The conversions in this changeset cannot use the `From<T>` trait
implementation because the conversion is lossy, either because they
involve converting a signed value to an unsigned value (`i32`⇒`u64`)
or because the convert from a larger data type to a smaller one
(`u64`⇒`i32`). In this case, the `as` type cast is necessary to perform
a bitwise conversion.

This coercion can cause negative values to become very large unsigned
values. This is intentional on line 90.
2018-05-03 07:27:15 +02:00
Marcus Griep
73a4efe984 Change $outname from :tt to :expr
It doesn't appear that `:tt` accepts the `stringify!()`-ed value in this
position. The :tt is only later used as an `:expr` to produce the name
for metadata purposes.

Converting this position to be an `:expr` allows the `stringify!()`-ed
value and accepts all current uses of the `graphql_scalar!()` macro in
this repository.
2018-05-03 07:27:15 +02:00
Atul Bhosale
875c80748d Fix cargo clippy warnings 2018-05-03 07:27:15 +02:00
Atul Bhosale
ea3c425f04 Replace try! with ? 2018-05-03 07:27:15 +02:00
Christoph Herzog
05c1011d83 (juniper_codegen) Upgrade syn + quote 2018-05-03 01:49:36 +02:00
Christoph Herzog
3df18f41f8 (juniper_rocket) Bump minimum rocket version to 0.3.9
Needed to bump minimum version to allow working on latest nightly.
2018-05-03 01:19:52 +02:00
theduke
3b445f0577
Add link to actix-web example 2018-04-29 14:58:38 +02:00
Christian Legnitto
218654ee97 Switch to indexmap 1.0
`ordermap` changed names to `indexmap` and released a stable 1.0.
2018-04-22 07:49:05 +02:00
Christian Legnitto
254a61c0e0 Update changelog for NaiveDate serialization change (#160) 2018-03-29 05:57:28 +02:00
Georg Semmler
2ea7d9b46e Allow graphiql to pass credentials to the server (#162) 2018-03-29 05:02:46 +02:00
Sebastian Porto
841fd7e26d Change serialization of Chronos NaiveDate (#151)
Fix chrono DateTime support

The DateTime support was improperly implemented with time (hour + minute support), which is fixed by this commit.

Documentation and tests have also been updated.

Only author: @sporto
2018-03-21 17:52:22 +01:00
Carlos Diaz-Padron
63d8a3d1a0 Handle list merging 2018-03-05 12:02:22 +01:00