1.0.20 • Published 1 year ago

create-gql-api v1.0.20

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

create-gql-api

Simplify GQL typing and consumption

Get Started

npx create-gql-api https://example.domain/graphql gql_api.ts

This generates a gql_api.ts file in your project.

import { createRequester, createSubscriber, createQuery, createMutation, createSubscription } from './gql_api.ts'

const query = createRequester(
    (query, variables) => {
        // Implement the GraphQL POST request with the
        // query, variables and any authentication you use
        // for your app
        return new Promise(() => {})
    }
)

const subscribe = createSubscriber(
    (query, variables, onMessage) => {
        // Optionally implement subscription handling
        // Call "onMessage" with new data
        // Return a disposer
        return () => {}
    }
)

// Create a query by giving it a name and what fields to include
export const queryFoo = createQuery("Foo", {
    foo: {
        name: true,
        email: true
    }
})
query(queryFoo)

// Query on simple values
export const queryBar = api.createQuery("Bar", {
    bar: [{ unit: 'FOOTER' }]
})
query(queryBar)

// Query on object and lists
export const queryBaz = api.createQuery("Baz", {
    baz: [{ id: '123' }, {
        id: true
    }]
})
query(queryBaz)

// Query with variables
export const queryBazWithVars = createQuery("BazWithVars", (vars: { id: string }) => ({
    baz: [{ id: vars.id }, {
        id: true
    }]
}))
query(queryBazWithVars, { id: '123' })

// Mutations works like queries
export const mutateSomething = createMutation("Something", () => ({
    something: [{}]
}))
query(mutateSomething)

// Subscriptions 
export const subscribeSomething = createSubscription("Something", (vars: { id: string }) => ({
    something: [{ id: vars.id }]
}))
subscribe(subscribeSomething, (data) => {
    // Handle the data
}, { id: '123' }) // Returns disposer
1.0.20

1 year ago

1.0.19

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago