graphql-client icon indicating copy to clipboard operation
graphql-client copied to clipboard

Allow using `#[derive(GraphQLQuery)]` without depending on serde

Open swlynch99 opened this issue 1 year ago • 0 comments

This PR makes the serde derives emitted by #[derive(GraphQLQuery)] use a private re-export of the serde crate instead of relying on users of this crate having added serde to their Cargo.toml.

Serde allows you to add an annotation

#[serde(crate = "<path to crate>")]

for exactly this reason so most of this PR is just plumbing the correct path through the codegen crate to the correct annotation.

Details

  • There is a new #[doc(hidden)] mod _private declaration in the graphql_client crate. All re-exports (which is just serde) have been placed there.
  • I have added a new serde_path field to GraphQLCodegenOptions which defaults to ::serde. This means that the code generated by the CLI should remain effectively unchanged.
  • The rest is just applying #[serde(crate = ...)] annotations where appropriate.

Fixes #427

swlynch99 avatar May 30 '24 01:05 swlynch99