Rust tooling for low-level manipulation of the GraphQL language.
Tools included
This project is intended to house a number of tools related to the low-level
workings of GraphQL according to the GraphQL specification. Nothing in
these libraries is specific to Apollo, and can freely be used by other
projects which need standards-compliant GraphQL tooling written in Rust. The
following crates currently exist:
apollo-encoder - a library to generate GraphQL code (SDL).
apollo-parser - a library to parse the GraphQL query language.
apollo-smith - a test case generator to test GraphQL code (SDL).
Please check out their respective READMEs for usage examples.
Status
apollo-rs is a work in progress. Please check out the
ROADMAP for upcoming features we are working on building.
If you do end up trying out apollo-rs and run into trouble, we encourage you
to open an issue.
Design Principles
Prioritizing developer experience. Elegant and ergonomic APIs is the
theme for Rust as a language, and we want to make sure that all component APIs
we provide are aligned with these principles.
Stability and reliability. Spec-compliant, and idempotent APIs which,
when complete, can be used safely in enterprise-grade codebases.
Diagnostics. The tools are to be written in a way that will allow us to
produce detailed diagnostics. It does not panic or return early if there is a
lexical or a syntactic error. Instead, the parser is meant to gather as much
context and information as possible and return errors alongside the output that
is valid. Coincidentally, this allows for easily debuggable code for those
maintaining this project.
Extensibility. The parser is written to work with different use cases in
our budding Rust GraphQL ecosystem, be it building schema-diagnostics for Rover,
or writing out query planning and composition algorithms in Rust. These all have
quite different requirements when it comes to AST manipulation. We wanted to
make sure we account for them early on.
请发表评论