gql-fetch

0.3.9 • Public • Published

gql-fetch

NPM Version NPM Downloads Build Status Test Coverage Dependencies DevDependencies

NPM

gql-fetch

The purpose of creating this library is to gather special usage standards in a client library and to facilitate development process about client-server communication.

Thanks to its simple and easy use, this library provides fast and clean code development. In the background, a new generation request method as known as fetch is used. This library solves this problem by polyfilling for browsers that don't have fetch support.

Outstanding

  • Thanks to it is designed for Graphql server, it provides fast and clean code development.
  • File upload support.
  • Requests can be aborted.
  • It is light and it has polyfill support.
  • Rxjs Observable support.

Installation

$ npm install gql-fetch

Usage

gql-fetch has two usage forms:


GQLClient

The GQLClient class takes two arguments when it is being created.

const client = new GQLClient('http://localhost:5000/graphql');

Class Properties:

Sample Usage

const client = new GQLClient('http://localhost:5000/graphql');
const request = client.fetch(`query ($id: Int!) {
                                user(id: $id) {
                                  id
                                  name
                                }
                              }`,{ id: 1 });
request.then(...);                  

In order to cancel a request created with GQLClient;

const client = new GQLClient('http://localhost:5000/graphql');
const request = client.fetch(`query ($id: Int!) {
                                user(id: $id) {
                                  id
                                  name
                                }
                              }`,{ id: 1 });
request.abort();                  

fetchObservable Sample

const client = new GQLClient('http://localhost:5000/graphql');
const fo = client.fetchObservable(`query ($id: Int!) {
                                user(id: $id) {
                                  id
                                  name
                                }
                              }`,{ id: 1 });                              
fo.subscribe(...);    

To upload file via GQLClient;

const client = new GQLClient('http://localhost:5000/graphql');
const request = client.fetch(`mutation ($file: File!) {
                                uploadFile(file: $file)           
                             }`, { file: fs.createReadStream(__dirname + '/file.txt')});
request.then(...);

getFetch

The getFetch function has two arguments.

This function returns the function.

Returned function arguments;

  • query: string (required)
  • variables: object (optional)
  • fetchOptions: IFetchOptions (optional)

This function returns GQLRequest class.

Sample Usage:

 
const gqlFetch = getFetch('http://localhost:5000/graphql');
const request = gqlFetch(`{                                   
                    users {
                      id 
                      name
                    }                      
                  }`);              
request.then(...);

GQLRequest

This class is created to manage the requests.

Class Properties:

Property Type Argument
response Promise -
aborted boolean -
abort void -
on this event: string, listener: (...args: any[]) => void
then Promise onfulfilled: IPromiseResolved< GQLResponse >, onrejected: IPromiseRejected
catch Promise onrejected
finally Promise onfinally

GQLResponse

Class Properties:

Property Type Argument
json any -
status number -
statusText string -
ok boolean -
url string -
headers Headers -

IClientOptions

Interface Properties:

Property Type Argument
headers object -

IFetchOptions

Interface Properties:

Property Type Argument
headers object -
operationName string -
redirect RedirectType -
follow number -
timeout number -
compress boolean -
size number -
agent Http(s)Agent -

Node Compatibility

  • node >= 6.x;

License

MIT

Package Sidebar

Install

npm i gql-fetch

Weekly Downloads

135

Version

0.3.9

License

MIT

Unpacked Size

31.4 kB

Total Files

29

Last publish

Collaborators

  • erayhanoglu