juniper/juniper/CHANGELOG.md
dependabot[bot] 9bdf8cf379
Update GraphiQL from 3.2.2 to 3.2.3 version (#1260)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kai Ren <tyranron@gmail.com>
2024-06-05 11:10:03 +00:00

11 KiB

juniper changelog

All user visible changes to juniper crate will be documented in this file. This project uses Semantic Versioning 2.0.0.

0.17.0 · 2024-04-?? (unreleased)

Diff | Milestone

BC Breaks

Changed

0.16.1 · 2024-04-04

Diff | Milestone

Changed

0.16.0 · 2024-03-20

Diff | Milestone

BC Breaks

  • October 2021 GraphQL spec: (#1000)
  • Replaced Visitor associated type with DeserializeOwned requirement in ScalarValue trait. (#985)
  • #[graphql_object] and #[graphql_subscription] expansions now preserve defined impl blocks "as is" and reuse defined methods in opaque way. (#971)
  • Renamed rename = "<policy>" attribute argument to rename_all = "<policy>" (following serde style). (#971)
  • Upgraded bson crate integration to 2.0 version. (#979)
  • Upgraded [uuid crate] integration to 1.0 version. (#1057)
  • Upgraded chrono-tz crate integration to 0.8 version. (#1119)
  • Upgraded bigdecimal crate integration to 0.4 version. (#1176)
  • Made FromInputValue trait methods fallible to allow post-validation. (#987)
  • Redesigned #[graphql_interface] macro: (#1009)
    • Removed support for dyn attribute argument (interface values as trait objects).
    • Removed support for downcast attribute argument (custom resolution into implementer types).
    • Removed support for async trait methods (not required anymore).
    • Removed necessity of writing impl Trait for Type blocks (interfaces are implemented just by matching their fields now). (#113)
    • Forbade default implementations of non-ignored trait methods.
    • Supported coercion of additional nullable arguments and return sub-typing on implementer.
    • Supported rename_all = "<policy>" attribute argument influencing all its fields and their arguments. (#971)
    • Supported interfaces implementing other interfaces. (#1028)
  • Split #[derive(GraphQLScalarValue)] macro into:
    • #[derive(GraphQLScalar)] for implementing GraphQL scalar: (#1017)
      • Supported generic ScalarValue.
      • Supported structs with single named field.
      • Supported overriding resolvers with external functions, methods or modules.
      • Supported specified_by_url attribute argument. (#1003, #1000)
    • #[derive(ScalarValue)] for implementing ScalarValue trait: (#1025)
      • Removed Serialize implementation (now should be provided explicitly). (#985)
  • Redesigned #[graphql_scalar] macro: (#1014)
    • Changed from_input_value() return type from Option to Result. (#987)
    • Mirrored new #[derive(GraphQLScalar)] macro.
    • Supported usage on type aliases in case #[derive(GraphQLScalar)] isn't applicable because of orphan rules.
  • Renamed ScalarValue::as_boolean method to ScalarValue::as_bool. (#1025)
  • Reworked chrono crate integration GraphQL scalars according to graphql-scalars.dev specs: (#1010)
  • Removed lifetime parameter from ParseError, GraphlQLError, GraphQLBatchRequest and GraphQLRequest. (#1081, #528)
  • Upgraded GraphiQL to 3.1.1 version (requires new graphql-transport-ws GraphQL over WebSocket Protocol integration on server, see juniper_warp/examples/subscription.rs). (#1188, #1193, #1246)
  • Abstracted Spanning::start and Spanning::end fields into separate struct Span. (#1207, #1208)
  • Removed graphql-parser-integration and graphql-parser Cargo features by merging them into schema-language Cargo feature. (#1237)
  • Renamed RootNode::as_schema_language() method as RootNode::as_sdl(). (#1237)
  • Renamed RootNode::as_parser_document() method as RootNode::as_document(). (#1237)
  • Reworked look-ahead machinery: (#1212)
    • Turned from eagerly-evaluated into lazy-evaluated:
      • Made LookAheadValue::List to contain new iterable LookAheadList type.
      • Made LookAheadValue::Object to contain new iterable LookAheadObject type.
    • Removed LookAheadMethods trait and redundant ConcreteLookAheadSelection type, making all APIs accessible as inherent methods on LookAheadSelection and LookAheadChildren decoupled types:
      • Moved LookAheadMethods::child_names() to LookAheadChildren::names().
      • Moved LookAheadMethods::has_children() to LookAheadChildren::is_empty().
      • Moved LookAheadMethods::select_child() to LookAheadChildren::select().
      • Moved LookAheadSelection::for_explicit_type() to LookAheadSelection::children_for_explicit_type().
      • Made LookAheadSelection::arguments() returning iterator over LookAheadArgument.
      • Made LookAheadSelection::children() returning LookAheadChildren.
    • Added Span to Arguments and LookAheadArguments. (#1206, #1209)
  • Disabled bson, url, uuid and schema-language Cargo features by default. (#1230)

Added

  • Usage of Rust arrays as GraphQL lists. (#966, #918)
  • From implementations for InputValue mirroring the ones for Value and better support for Option handling. (#996)
  • null in addition to None for creating Value::Null in graphql_value! macro (following serde_json::json! style). (#996)
  • graphql_input_value! and graphql_vars! macros. (#996)
  • time crate integration behind time Cargo feature. (#1006)
  • #[derive(GraphQLInterface)] macro allowing using structs as GraphQL interfaces. (#1026)
  • bigdecimal crate integration behind bigdecimal Cargo feature. (#1060)
  • [rust_decimal crate] integration behind rust_decimal Cargo feature. (#1060)
  • js Cargo feature enabling js-sys and wasm-bindgen support for wasm32-unknown-unknown target. (#1118, #1147)
  • LookAheadMethods::applies_for() method. (#1138, #1145)
  • LookAheadMethods::field_original_name() and LookAheadMethods::field_alias() methods. (#1199)
  • anyhow crate integration behind anyhow and backtrace Cargo features. (#1215, #988)
  • RootNode::disable_introspection() applying additional validation::rules::disable_introspection, and RootNode::enable_introspection() reverting it. (#1227, #456)
  • Clone and PartialEq implementations for GraphQLResponse. (#1228, #103)

Changed

Fixed

  • Unsupported spreading GraphQL interface fragments on unions and other interfaces. (#965, #798)
  • Unsupported expressions in graphql_value! macro. (#996, #503)
  • Incorrect GraphQL list coercion rules: null cannot be coerced to an [Int!]! or [Int]!. (#1004)
  • All procedural macros expansion inside macro_rules!. (#1054, #1051)
  • Incorrect input value coercion with defaults. (#1080, #1073)
  • Incorrect error when explicit null provided for nullable list input parameter. (#1086, #1085)
  • Stack overflow on nested GraphQL fragments. (CVE-2022-31173)
  • Unstable definitions order in schema generated by RootNode::as_sdl(). (#1237, #1134)
  • Unstable definitions order in schema generated by introspect() or other introspection queries. (#1239, #1134)

Previous releases

See old CHANGELOG.