This client is an abstraction of Apollo client to be used with typed methods.
- Create a client
- Call mutation GraphQL
- Call query GraphQL
- Stringify a query or mutation without use client
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
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
constructor(uri?: string, verbose?: boolean);
new GraphQLClient('http://localhost:3000/graphql');
constructor(options?: ClientOptions, verbose?: boolean);
new GraphQLClient({
uri: 'http://localhost:3000/graphql',
fetch: fetch as any,
});
More information about available options, read apollo-boost
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>>;
You can use queryToString
to parse your typed query without use client
To generate types, we suggest to install graphql-code-generator
By RawZ06