Skip to content

Latest commit

Β 

History

History
262 lines (223 loc) Β· 4.71 KB

README.md

File metadata and controls

262 lines (223 loc) Β· 4.71 KB

hera

πŸ‘©πŸΌβ€πŸ’» Simple and lightweight GraphQL client.

All Contributors Build Status npm david Hits-of-Code GitHub

🧰 installation

yarn add hera-js

🌳 usage

import { hera } from 'hera-js';

const { data } = await hera({
  options: {
    url: 'https://example.com'
  },
  query: `
    query {
      user(id: $id) {
        id
        name
        age
      }
    }
  `,
  variables: {
    id: 1
  }
});

πŸ‘» passing parameters as objects

const { data } = await hera({
  options: {
    url: 'https://example.com',
  },
  query: `
    mutation {
      createUser(info: $info) {
        id
        name
        age
        address
        job
      }
    }
  `,
  variables: {
    info: {
      name: 'Cuong Tran',
      age: 22,
      address: 'Tam Ky - Sai Gon / Vietnam',
      job: 'software engineer',
    },
  },
});

πŸ› error handling

const { data, errors } = await hera({
  options: {
    url: 'https://example.com',
  },
  query: `
    query {
      user(id: $id) {
        id
        name
        age
      }
    }
  `,
  variables: {
    id: 1,
  },
});

🌏 global options

You can specify config defaults that will be applied to every request.

import { hera, globalOptions } from 'hera-js';

globalOptions.url = 'https://example.com';
// globalOptions.headers = <your headers>

const { data } = await hera({
  query: `
    mutation {
      createUser(info: $info) {
        id
        name
        age
        address
        job
      }
    }
  `,
  variables: {
    info: {
      name: 'Cuong Tran',
      age: 22,
      address: 'Sai Gon / Vietnam',
      job: 'software engineer',
    },
  },
});

πŸ’© enums

const { data } = await hera({
  query: `
    mutation {
      createUser(info: $info) {
        id
        name
        age
        address
        job
        sex
      }
    }
  `,
  variables: {
    info: {
      name: 'Cuong Tran',
      age: 22,
      address: 'Sai Gon / Vietnam',
      job: 'software engineer',
      sex: 'MALE',
    },
  },
  options: {
    enums: ['sex'],
  },
});

πŸš€ API

interface Options {
  url?: string;
  headers?: any;
  timeout?: number;
  enums?: string[];
}

hera({
  query: string;
  variables?: any;
  options?: Options;
}) : Promise<{ data: any; errors: any[] }>

πŸ“ options

{
  // `url` is the server URL that will be used for the request
  url: '/example',
  // `headers` are custom headers to be sent
  headers: {
    token: 'Fv0761DZcunUr0dKBc4oo5k55jJchwqu',
    'Content-Type': 'application/json'
  },
}

πŸ“’ query

query is query or mutation in Graphql

graphql's query

query: `
  query {
    user(id: $id) {
      id
      name
      age
    }
  }
`

graphql's mutation

query: `
  mutation {
    createUser(info: $info) {
      id
      name
      age
      address
      job
    }
  }
`

πŸ’‰ variables

variables is used to pass values to query's variables

query: `
  mutation {
    createUser(info: $info) {
      id
      name
      age
      address
      job
    }
  }
`,
variables: {
  info: {
    name: 'Cuong Tran',
    age: 22,
    address: 'Sai Gon / Vietnam',
    job: 'software engineer',
  },
}

🀝 contributors

Thanks goes to these wonderful people (emoji key):

Cuong Duy Nguyen
Cuong Duy Nguyen

πŸ’» πŸ“– ⚠️ πŸ‘€

This project follows the all-contributors specification. Contributions of any kind welcome!

πŸ“œ license

MIT Β© Cuong Tran