gql-hook-codegen
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

gql-hook-codegen

semantic-release

This tool generates TypeScript types for queries/mutations written in an GraphQL project given a valid GraphQL schema.

Install

Yarn

yarn add gql-hook-codegen

NPM

npm install gql-hook-codegen

How to use

Step 1: Create a Typescript file use-user.gql.ts with the following content

import gql from 'graphql-tag'

const query = gql`
  query {
    user {
      name
    }
  }
`

Step 2: Add schema file schema.gql

type User {
  id: ID!
  name: String
}

type Query {
  user(id: ID!): User
}

Step 3: Run the following code:

npx gql-hook-codegen generate --schemaFile './schema.gql'

Step 4: Script will update use-user.gql.ts to the following:

import { QueryHookOptions, useQuery } from '@apollo/client'
import gql from 'graphql-tag'

const query = gql`
  query fetchUser($id: ID!) {
    user(id: $id) {
      name
    }
  }
`

export interface RequestType {
  id: string | undefined
}

export interface QueryType {
  user?: UserType
}

export interface UserType {
  name?: string
  __typename?: 'User'
}

export function useUserQuery(
  request: RequestType,
  options?: QueryHookOptions<QueryType, RequestType>,
) {
  return useQuery<QueryType, RequestType>(query, {
    variables: request,
    skip: !request.id,
    ...options,
  })
}

More Examples

  1. Schema
  2. Query
  3. Query with no parameters
  4. Batched Queries
  5. Query with multiple inputs
  6. Query with enum
  7. Query with date
  8. Query with shared variable
  9. Mutation
  10. Lazy query
  11. Query with union

Usage

gql-hook-codegen generate   [--pattern=<string>] [--schema-file=<string>] [--schema-url=<string>]
                            [--ignore=<string>] [--package=<string>] [--save] [--help]

OPTIONS

--pattern=<string>       File pattern

--schema-file=<string>   Location of the schema file

--schema-url=<string>    Url to fetch graphql schema from

--ignore=<string>        Folders to ignore

--package=<string>       Default package to use

--save                   Save schema locally if --schema-url is used

COMMON

--help                   Show help

Automatic Release

Here is an example of the release type that will be done based on a commit messages:

Commit message Release type
fix: [comment] Patch Release
feat: [comment] Minor Feature Release
perf: [comment] Major Feature Release
doc: [comment] No Release
refactor: [comment] No Release
chore: [comment] No Release

Package Sidebar

Install

npm i gql-hook-codegen

Weekly Downloads

42

Version

1.1.1

License

MIT

Unpacked Size

157 kB

Total Files

52

Last publish

Collaborators

  • rintoj