Skip to content

🕸️ A zero-dependency graphql client that likes (but does not require) types

License

Notifications You must be signed in to change notification settings

taskless/graphinql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

graphinql logo

@taskless/graphinql

A super-lightweight GraphQL client built on cross-fetch. As few dependencies as possible, works in the browser and server. Specifically built to work with strings and avoid a dependency on graphql / graphql-tag so you can keep your codebase light. In short, the best parts of graphql-request without the graphql dependency, but without losing the ability to type your requests and responses.

  • ✅ Queries, Mutations, Introspection
  • ✅ Custom headers per request or shared via new GraphQLClient()
  • ✅ Typed responses and variables
  • ❌ Typed GraphQL Document Node (exposing these types would force graphql to be a dependency, and risks the "multiple GraphQL" bug even for types-only support)
    • Note: If you need the Typed Document Node, you should use the excellent graphql-request library
  • ❌ Subscriptions (operates over https fetch)

BREAKING CHANGE (4.x)

⚠️ With node 18 providing a What-WG compatible fetch, version 4.0 of graphinql no longer provides a fetch by default nor includes p-retry. If you need these features, you can provide them yourself, via the new fetch option.

Usage

import { GraphQLClient, request } from "@taskless/graphinql";

// as an object
const client = new GraphQLClient(endpoint, options);
const { data, error } = await client.request<TReturnType, TVariables>(
  stringDocument,
  {
    // variables
  },
  {
    // options
  }
);

// or as a one-off
request<TReturnType, TVariables>(endpoint, stringDocument, variables, options);
  • endpoint Your GraphQL endpoint
  • stringDocument A GraphQL query, as a string
  • variables (optional) GraphQL Variables if applicable
  • options (optional) A set of GraphQL Client options, provided as an object
    • options.headers<HeadersInit> (optional) A Headers compatible object, specifying headers to include with the request
    • options.fetch<typeof fetch> (optional) A What-WG compatible fetch interface

Additional Examples

About the Name

This library was originally built on phin before migrating to a What-WG fetch solution.

Contributors

All Contributors

Jakob Heuser
Jakob Heuser

💻 🚇 📖
takanome_dev
takanome_dev

📖 💻
Samuel Giddins
Samuel Giddins

💻 🚇 ⚠️

License

The source code in this repository is made available under the MIT license.