JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q66580F
  • License MIT

Package Exports

  • hasura-gql-client
  • hasura-gql-client/dist/cjs/index.js
  • hasura-gql-client/dist/esm/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (hasura-gql-client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

hasura-gql-client

Typescript based Hasura GQL client for NodeJS/TS/JS apps.

npm version

hasura-gql-client image

  • 🚀 Blazing fast GraphQL
  • ⚡️ Lightning Fast
  • 🔑 Fully Typed APIs
  • 🛠️ Rich Features
  • 📦 Optimized Build
  • 🥴 No Graphql string mess

Installation

yarn add hasura-gql-client

or

npm i hasura-gql-client

Settings

import Client from 'hasura-gql-client';

interface TestBook {
    id: string;
    name: string;
}

interface TestUser {
    id: string;
    email: string;
    books: TestBook[];
    book: TestBook;
}

interface Select {
    test_user: TestUser;
    test_book: TestBook;
}

// Insert type
interface InsertTestUser {
    email: string;
}

interface InsertTestBook {
    name: string;
}

interface Insert {
    test_user: InsertTestUser;
    test_book: InsertTestBook;
}

// Update type
interface UpdateTestUser {
    email?: string;
}

interface UpdateTestBook {
    name: string;
}

interface Update {
    test_user: UpdateTestUser;
    test_book: UpdateTestBook;
}

const client = new Client<Select, Insert, Update>({
    host: process.env.HOST ?? 'err',
    customHeaders: { 'x-hasura-admin-secret': process.env.X_HASURA_ADMIN_SECRET ?? 'err' },
    debug: true,
});

const start = async (): Promise<void> => {
    // select
    const usersSelect2 = await client.select('test_user', ['id', 'book.name', 'books.id']);
    console.log(usersSelect2[0]?.id);
    console.log(usersSelect2[0]?.books[0].id);
    console.log(usersSelect2[0]?.book.name);

    // insert
    const usersInsert = await client.insert('test_user', { email: 'foo@email.com', name: 'foo' }, ['id']);
    console.log(usersInsert[0].id);

    // update
    const usersUpdate = await client.update('test_user', { email: 'foo2@email.com' }, ['id']);
    console.log(usersUpdate[0].id);
};

start().catch(console.error);

See example folder for more details.