0.5.0 • Published 6 months ago

@devticon-os/graphql-codegen-axios v0.5.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

graphql-codegen-axios

A code generation tool that generates an Axios SDK based on your GraphQL queries. This tool makes it easy to consume GraphQL APIs in your Axios projects by automatically generating code for querying your GraphQL API and mapping the results to JavaScript objects.

Features

  • Generates TypeScript code for querying GraphQL APIs with Axios.
  • Supports the @first, @firstOrFail, and @nonNullable directives.

Usage

To use graphql-codegen-axios, you need to have Node.js installed on your system.

Installation You can install graphql-codegen-axios using npm:

npm install @devticon-os/graphql-codegen-axios --save-dev
yarn add @devticon-os/graphql-codegen-axios -D
pnpm add @devticon-os/graphql-codegen-axios -D

Configuration

In your project's codegen.yml configuration file, add the following configuration:

schema: https://your-graphql-api.com/graphql
documents: src/**/*.graphql
generates:
    src/generated/graphql.ts:
        plugins:
        - typescript
        - typescript-operations
        - @devticon-os/graphql-codegen-axios

You can customize the output file path and other settings as per your requirements.

Directives

graphql-codegen-axios supports the following directives:

  • @first: Returns only the first object from a collection.
  • @firstOrFail: Returns the first object from a collection or throws an error if the collection is empty.
  • @nonNullable: Throws an error if the query returns null. To use a directive, add it to your GraphQL query like this:
query GetFirstUser {
    users(first: 1) @first {
      id
      name
    }
}
query GetFirstUser {
    users(first: 1) @firstOrFail {
      id
      name
    }
}
query GetFirstUser {
    user(id: "1") @nonNullable {
      id
      name
    }
}

Field Selection

If your query selects only one field, it will be returned directly instead of being wrapped in an object. For example, the following query:

query getCats {
  cats {
    id
  }
}

Will generate code that directly returns the name field:

export const getSdk = (client: AxiosInstance) => ({
  getCats: (variables: GetCatsQueryVariables, config?: AxiosRequestConfig) =>
    client
      .post<GraphqlResponse<GetCatsQuery>>('', { variables, query: getCatsRawQuery }, config)
      .then(handleResponse) // returns data from axios response
      .then(unpackSingleResults('cats')) // returns "cats" from GetCatsQuery object,
});

Generating Code

You can generate the Axios SDK by running the following command:

npx graphql-codegen

This will generate the TypeScript code in the specified output file path.

Contributing

Contributions are welcome! Please see the contributing guidelines for more information.

License

This project is licensed under the MIT License. See the LICENSE file for details.

0.5.0

6 months ago

0.4.5

7 months ago

0.4.4

11 months ago

0.4.3

11 months ago

0.4.2

11 months ago

0.4.1

11 months ago

0.4.0

11 months ago

0.3.23

11 months ago

0.3.22

11 months ago

0.3.21

11 months ago

0.3.20

11 months ago

0.3.19

1 year ago

0.3.18

1 year ago

0.3.17

1 year ago

0.3.16

1 year ago

0.3.15

1 year ago

0.3.14

1 year ago

0.3.13

1 year ago

0.3.12

1 year ago

0.3.11

1 year ago

0.3.10

1 year ago

0.3.9

1 year ago

0.3.8

1 year ago

0.3.7

1 year ago

0.3.6

1 year ago

0.3.5

1 year ago

0.3.4

1 year ago

0.3.3

1 year ago

0.3.2

1 year ago

0.3.1

1 year ago

0.3.8-test

1 year ago

0.3.7-test

1 year ago

0.3.6-test

1 year ago

0.3.5-test

1 year ago

0.3.4-test

1 year ago

0.3.3-test

1 year ago

0.3.2-test

1 year ago

0.3.1-test

1 year ago

0.3.0-test

1 year ago

0.2.18

1 year ago

0.2.17

1 year ago

0.2.16

1 year ago

0.2.15

1 year ago

0.2.14

1 year ago

0.2.13

1 year ago

0.2.12

1 year ago

0.2.11

1 year ago

0.2.10

1 year ago

0.2.9

1 year ago

0.2.8

1 year ago

0.2.7

1 year ago

0.2.6

1 year ago

0.2.5

1 year ago

0.2.4

1 year ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago