JSPM

  • Created
  • Published
  • Downloads 2019187
  • Score
    100M100P100Q238245F
  • License MIT

A spec-compliant client-side GraphQL implementation

Package Exports

  • @0no-co/graphql.web
  • @0no-co/graphql.web/package.json

Readme

@0no-co/graphql.web

The spec-compliant minimum of client-side GraphQL.

CI Status Bundlesize Discord

@0no-co/graphql.web is an experimental library, aiming to provide an absolute minimum of features and exports of graphql utilities that typical GraphQL web apps or GraphQL clients need.

While its goal isn’t to be an exact match to the GraphQL.js API it aims to provide API- and type-compatible where possible and necessary. However, its goal is to provide the smallest implementation for common GraphQL utilities that are still either spec-compliant or compatible with GraphQL.js’ implementation.

Note: While this library can be used as a drop-in replacement for graphql in some cases, the graphql-web-lite project is maintained to be a full shim/alias for the graphql package.

API

Currently, only a select few exports are provided — namely, the ones listed here are used in @urql/core, and we expect them to be common in all client-side GraphQL applications.

Export Description Links
parse A tiny (but compliant) GraphQL query language parser. Source
print A (compliant) GraphQL query language printer. Source
visit A recursive reimplementation of GraphQL.js’ visitor. Source
Kind The GraphQL.js’ Kind enum, containing supported ASTNode kinds. Source
GraphQLError GraphQLError stripped of source/location debugging. Source
valueFromASTUntyped Coerces AST values into JS values. Source

The stated goals of any reimplementation are:

  1. Not to implement any execution or type system parts of the GraphQL specification.
  2. To adhere to GraphQL.js’ types and APIs as much as possible.
  3. Not to implement or expose any rarely used APIs or properties of the GraphQL.js library.
  4. To provide a minimal and maintainable subset of GraphQL.js utilities.

Therefore, while we can foresee implementing APIs that are entirely separate and unrelated to the GraphQL.js library in the future, for now the stated goals are designed to allow this library to be used by GraphQL clients, like @urql/core.