graphql-tools

Crates.iographql-tools
lib.rsgraphql-tools
version0.4.0
sourcesrc
created_at2021-12-05 14:36:35.277157
updated_at2024-11-13 08:20:42.231788
descriptionTools for working with GraphQL in Rust, based on graphql-parser Document.
homepagehttps://github.com/dotansimha/graphql-tools-rs
repository
max_upload_size
id492700
size8,086,908
Kamil Kisiela (kamilkisiela)

documentation

https://github.com/dotansimha/graphql-tools-rs

README

graphql-tools (Rust)

Documentation | Crate | GitHub

The graphql_tools crate implements tooling around GraphQL for Rust libraries. Most of the tools are based on traits and structs implemented in graphql_parser crate.

The goal of this library is to create a common layer of tools that has similar/improved APIs to graphql-js reference implementation and graphql-tools from the JS/TS ecosystem.

Getting Started

Crates.io

Add graphql-tools as a dependency of your project by adding the following to your Cargo.toml file:

[dependencies]
graphql-tools = "..."

Or, if you are using cargo-edit:

cargo add graphql-tools

By default, this crate is using the graphql-parser library for parsing. If you wish to use an alternative implementation such as graphql-hive/graphql-parser-hive-fork, use the following features setup:

[dependencies]
graphql-tools = { version = "...", features = "graphql_parser_fork", default-features = false }

Validation Rules

This comparison is based on graphql-js reference implementation.

  • ExecutableDefinitions (not actually needed)
  • UniqueOperationNames
  • LoneAnonymousOperation
  • SingleFieldSubscriptions
  • KnownTypeNames
  • FragmentsOnCompositeTypes
  • VariablesAreInputTypes
  • LeafFieldSelections
  • FieldsOnCorrectType
  • UniqueFragmentNames
  • KnownFragmentNames
  • NoUnusedFragments
  • PossibleFragmentSpreads
  • NoFragmentCycles
  • UniqueVariableNames
  • NoUndefinedVariables
  • NoUnusedVariables
  • KnownDirectives
  • UniqueDirectivesPerLocation
  • KnownArgumentNames
  • UniqueArgumentNames
  • ValuesOfCorrectType
  • ProvidedRequiredArguments
  • VariablesInAllowedPosition
  • OverlappingFieldsCanBeMerged
  • UniqueInputFieldNames (blocked by https://github.com/graphql-rust/graphql-parser/issues/59)
Commit count: 0

cargo fmt