0.6.2 • Published 4 months ago

@graphql-ez/client v0.6.2

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

@graphql-ez/client

Fully feature GraphQL Client for Node.js

Features

By default if you only use the traditional GraphQL over HTTP, any other external dependency is not imported

Usage

import { EZClient } from '@graphql-ez/client';

export const ezClient = EZClient({
  endpoint: 'http://localhost:8080/api/graphql',
});

HTTP

await ezClient.query('query($n: Int!) { hello(n: $n) }', {
  variables: {
    n: 10,
  },
  // "POST" by default
  method: 'GET',
});

await ezClient.mutation('mutation { hello }', {
  headers: {
    authorization: 'foo',
  },
});

// Automatically throw if any error is returned
await ezClient.assertedQuery('mutation { hello }', {
  // ...
});

Websockets

graphql-ws

const { iterator, unsubscribe } = ezClient.websockets.subscribe('subscription{ping}');

for await (const value of iterator) {
  console.log(value);
}

await unsubscribe();

(await ezClient.websockets.client).dispose();

Legacy subscriptions-transport-ws

const { iterator, unsubscribe } = ezClient.websockets.legacy.subscribe('subscription{ping}');

for await (const value of iterator) {
  console.log(value);
}

await unsubscribe();

(await ezClient.websockets.legacy.client).close();

Defer and Stream

const { iterator } = ezClient.stream('{stream @stream(initialCount: 1)}');

let i = 0;
for await (const value of iterator) {
  switch (++i) {
    case 1:
      expect(value).toContain(`{"data":{"stream":["A"]},"hasNext":true}`);
      break;
    case 2:
      expect(value).toContain(`{"data":"B","path":["stream",1],"hasNext":true}`);
      break;
    case 3:
      expect(value).toContain(`{"data":"C","path":["stream",2],"hasNext":true}`);
      break;
  }
}

SSE

const { iterator, unsubscribe } = ezClient.sseSubscribe('subscription{ping}');

for await (const value of iterator) {
  console.log(value);
}

await unsubscribe();

GraphQL Upload

const { data, errors } = await ezClient.uploadQuery('mutation($file: Upload!) { uploadFile(file:$file) }', {
  variables: {
    file: Buffer.from('hello-world'),
  },
});

LICENSE

MIT