Skip to content
/ hera Public

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

License

Notifications You must be signed in to change notification settings

cuongndc9/hera

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bfbbbf4 Β· Mar 22, 2025

History

28 Commits
Jan 31, 2021
Jan 31, 2021
Jan 31, 2021
Nov 12, 2019
Nov 12, 2019
Nov 12, 2019
Sep 7, 2020
Nov 12, 2019
Mar 22, 2025
Nov 12, 2019
Jan 31, 2021
Nov 12, 2019
Jul 13, 2020
Dec 13, 2020

Repository files navigation

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