Skip to content

GraphQL client and GraphQL code generator with GraphQL autocomplete library generation ⚡⚡⚡ for browser,nodejs and react native ( apollo compatible )

License

Notifications You must be signed in to change notification settings

graphql-editor/graphql-zeus

Repository files navigation

npm Commitizen friendly npm downloads

Strongly Typed GraphQL from the team at GraphQL Editor

Install

$ npm i -g graphql-zeus # OR # yarn global add graphql-zeus 

You can also install it locally to a project and then use it as an npm or yarn script command using npx or yarn directly like this:

$ npx zeus schema.graphql ./ # OR # yarn zeus schema.graphql ./ 

TypeScript

Zeus is TypeScript native, you can refer to imported types directly from the generated output of the CLI

$ zeus schema.graphql ./ 

Generate

To generate clients simply run this command:

For NodeJS For React Native
$ zeus schema.graphql ./ --node $ zeus schema.graphql ./

How it works

GraphQL Zeus is the absolute best way to interact with your GraphQL endpoints in a type-safe way. Zeus uses your schema to generate Typescript types and strongly typed clients to unlock the power, efficiency, productivity and safety of Typescript on your GraphQL requests.

GraphQL Syntax ( not type-safe 😢 )

query ($id: String!) { usersQuery { admin { sequenceById(_id: $id) { _id name analytics { sentMessages sentInvitations receivedReplies acceptedInvitations } replies { message createdAt _id } messages { _id content renderedContent sendAfterDays } tracks { _id createdAt inviteSent inviteAccepted contact { linkedInId } } } } } }

Zeus syntax ( type-safe 😋 )

{ usersQuery: { admin: { sequenceById: [ { id: $("id", "String!") }, { _id: true, name: true, analytics: { ...fields("SequenceAnalytics") }, replies: { ...fields("SequenceTrackReply"), }, messages: { ...fields("Message"), }, tracks: { ...fields("SequenceTrack"), contact: { linkedInId: true, }, }, }, ], }, }, }

New! Composables

import { Gql, ComposableSelector, } from './zeus/index.js'; const withComposable = <T extends ComposableSelector<'Card'>, Z extends T>(id: string, rest: Z | T) => Gql('query')({ cardById: [{ cardId: id }, rest], }); const c1result = await withComposable('12', { id: true, }); const c2result = await withComposable('12', { Defense: true, Attack: true, });

Both responses and inputs are safely typed

Features

⚡️ Validates queries and selectors ⚡️ Types mapped from your schema
⚡️ Fetch all primitive fields with one function
⚡️ Works with Apollo Client, React Query, Stucco Subscriptions (*more coming soon...)
⚡️ Works with Subscriptions
⚡️ Infer complex response types
⚡️ Create reusable selection sets (like fragments) for use across multiple queries
⚡️ Supports GraphQL Unions, Interfaces, Aliases and Variables
⚡️ Handles massive schemas
⚡️ Supports Browsers, Node.js and React Native in Javascript and Typescript
⚡️ Schema downloader
⚡️ JSON schema generation

Full documentation

Our full documentation has all the use cases of:

  • scalars
  • selectors

and much more...

Full documentation is available here

Join the Zeus Community and Spread the Word

⚡️ Join the Discussion forum on Dicord 📣

⚡️ Leave a GitHub star ⭐️ 👆

⚡️ Spread the word on your socials and with your networks! 🗣

Contribute

For a complete guide to contributing to GraphQL Zeus, see the Contribution Guide.

  1. Fork this repo
  2. Create your feature branch: git checkout -b feature-name
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request

License

MIT 🕊

About

GraphQL client and GraphQL code generator with GraphQL autocomplete library generation ⚡⚡⚡ for browser,nodejs and react native ( apollo compatible )

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 30