···11+<div align="center">
22+ <h2>@0no-co/graphql.web</h2>
33+ <strong>The spec-compliant minimum of client-side GraphQL.</strong>
44+ <br />
55+ <br />
66+ <a href="https://github.com/0no-co/graphql.web/actions/workflows/release.yml">
77+ <img alt="CI Status" src="https://github.com/0no-co/graphql.web/actions/workflows/release.yml/badge.svg?branch=main" />
88+ </a>
99+ <a href="https://npmjs.com/package/@0no-co/graphql.web">
1010+ <img alt="Bundlesize" src="https://deno.bundlejs.com/?q=@0no-co/graphql.web&badge" />
1111+ </a>
1212+ <a href="https://urql.dev/discord">
1313+ <img alt="Discord" src="https://img.shields.io/discord/1082378892523864074?color=7389D8&label&logo=discord&logoColor=ffffff" />
1414+ </a>
1515+ <br />
1616+ <br />
1717+</div>
1818+1919+`@0no-co/graphql.web` is an **experimental** library, aiming to provide an
2020+absolute minimum of features and exports of `graphql` utilities that typical
2121+GraphQL web apps or GraphQL clients need.
2222+2323+While its goal isn’t to be an exact match to [the GraphQL.js
2424+API](https://graphql.org/graphql-js/graphql/) it aims to provide API- and
2525+type-compatible where possible and necessary. However, its goal is to provide
2626+the smallest implementation for common GraphQL utilities that are still either
2727+spec-compliant or compatible with GraphQL.js’ implementation.
2828+2929+> **Note:** While this library can be used as a drop-in replacement for
3030+> `graphql` in _some cases_, the [`graphql-web-lite`
3131+> project](https://github.com/0no-co/graphql-web-lite) is maintained to be
3232+> a full shim/alias for the `graphql` package.
3333+3434+### API
3535+3636+Currently, only a select few exports are provided — namely, the ones listed here
3737+are used in `@urql/core`, and we expect them to be common in all client-side
3838+GraphQL applications.
3939+4040+| Export | Description | Links |
4141+| --- | ----------- | -------- |
4242+| `parse` | A tiny (but compliant) GraphQL query language parser. | [Source](./src/parser.ts) |
4343+| `print` | A (compliant) GraphQL query language printer. | [Source](./src/printer.ts) |
4444+| `visit` | A recursive reimplementation of GraphQL.js’ visitor. | [Source](./src/printer.ts) |
4545+| `Kind` | The GraphQL.js’ `Kind` enum, containing supported `ASTNode` kinds. | [Source](./src/kind.ts) |
4646+| `GraphQLError` | `GraphQLError` stripped of source/location debugging. | [Source](./src/kind.ts) |
4747+4848+The stated goals of any reimplementation are:
4949+1. Not to implement any execution or type system parts of the GraphQL
5050+ specification.
5151+2. To adhere to GraphQL.js’ types and APIs as much as possible.
5252+3. Not to implement or expose any rarely used APIs or properties of the
5353+ GraphQL.js library.
5454+4. To provide a minimal and maintainable subset of GraphQL.js utilities.
5555+5656+Therefore, while we can foresee implementing APIs that are entirely separate and
5757+unrelated to the GraphQL.js library in the future, for now the stated goals are
5858+designed to allow this library to be used by GraphQL clients, like
5959+[`@urql/core`](https://github.com/urql-graphql/urql).