JSPM

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

Package Exports

    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.