Skip to content

RawZ06/ts-graphql-client

Repository files navigation

Typescript client GraphQL graphql-client

This client is an abstraction of Apollo client to be used with typed methods.

Features

  • Create a client
  • Call mutation GraphQL
  • Call query GraphQL
  • Stringify a query or mutation without use client

Installation

This is a Node.js module.

Before installing, download and install Node.js. Node.js 14.0 or higher is required.

npm install ts-graphql-client

or

yarn add ts-graphql-client

How to use

import { GraphQLClient } from 'ts-graphql-client'

type User = {
  id: string;
  name: string;
  username: string;
  email: string;
  phone: string;
}

const client = new GraphQLClient('https://graphqlplaceholder.vercel.app/graphql')

async function main() {
    const users = await client
        .query<User[], {}>(
            'users',
            {},
            {
                id: true,
                name: true,
                username: true,
                email: true,
                phone: undefined,
            }
        )
        .then((res) => res.toJSON())
    console.log(users)
}

main()

You can test it with stackblitz : ts-graphql-client-example

Details

Constructor

Quick start

constructor(uri?: string, verbose?: boolean);
new GraphQLClient('http://localhost:3000/graphql');

With options

constructor(options?: ClientOptions, verbose?: boolean);
new GraphQLClient({
    uri: 'http://localhost:3000/graphql',
    fetch: fetch as any,
});

More information about available options, read apollo-boost

Queries

query<ResultType, SearchType>(name: string, parameters: ClientParameters<SearchType>, attribute: ClientAttribute<UnArray<ResultType>>, callback: (data: ClientResult<ResultType>, err: ClientError) => void): void;
query<ResultType, SearchType>(name: string, parameters: ClientParameters<SearchType>, attribute: ClientAttribute<UnArray<ResultType>>): Promise<ClientResult<ResultType>>;
mutate<ResultType, SearchType>(name: string, parameters: ClientParameters<SearchType>, attribute: ClientAttribute<UnArray<ResultType>>, callback: (data: ClientResult<ResultType>, err: ClientError) => void): void;
mutate<ResultType, SearchType>(name: string, parameters: ClientParameters<SearchType>, attribute: ClientAttribute<UnArray<ResultType>>): Promise<ClientResult<ResultType>>;

Note

You can use queryToString to parse your typed query without use client

Hint

To generate types, we suggest to install graphql-code-generator

License

By RawZ06

MIT

About

Typed client GraphQL using Apollo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published