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